Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-doc
Path: blob/main/documentation/content/en/books/handbook/ports/_index.po
18099 views
# 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: 2026-02-22 15:58+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\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 "Read this chapter to learn:"
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: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: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:79
msgid ""
"However, over link:https://ports.FreeBSD.org[{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:81
msgid ""
"Packages can be manipulated with the FreeBSD package management commands."
msgstr ""

#. type: Plain text
#: 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: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:90
msgid ""
"While the two technologies are similar, packages and ports each have their "
"own strengths.  Select the technology that meets the needs for installing a "
"particular application."
msgstr ""

#. type: Block title
#: 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: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:94
msgid ""
"Packages do not require compilation time. For large applications, such as "
"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: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:96
#, no-wrap
msgid "Port Benefits"
msgstr ""

#. type: Plain text
#: 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:99
msgid ""
"Some applications have compile-time options relating to which features are "
"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:101
msgid ""
"In some cases, multiple packages will exist for the same application with "
"different settings. For example, NGINX(R) is available as a `nginx` package "
"and a `nginx-lite` package, the former has many more options enabled, but "
"this in turn requires many things to be installed as dependencies for it to "
"work, thus increasing space consumption and attack surface."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:103
msgid ""
"The transitive dependencies can grow quite large, for example the full "
"`nginx` package will pull in several X libraries which can be quite "
"surprising, so building from ports allows to choose only the options needed "
"without a \"kitchen sink\" approach. In some cases, multiple packages will "
"exist for the same application to specify certain settings."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:104
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:105
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:106
msgid "Source code is needed in order to apply custom patches."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:108
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:112
msgid ""
"Before installing an application, check https://vuxml.freebsd.org/[] for "
"related security issues."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/handbook/ports/_index.adoc:114
msgid ""
"To audit installed packages against known vulnerabilities, run `pkg audit "
"-F`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:117
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:119
#, no-wrap
msgid "Finding Software"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:123
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:125
msgid ""
"The FreeBSD web site maintains an up-to-date searchable list of all the "
"available applications, at link:https://ports.FreeBSD.org[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:126
msgid ""
"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:127
msgid ""
"If finding a particular application becomes challenging, try searching a "
"site like https://sourceforge.net/[SourceForge] or https://github.com/"
"[GitHub] then check back at the link:https://ports.FreeBSD.org[Ports Portal] "
"to see if the application has been ported."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:128
msgid ""
"Search the binary package repository for an application using the man:pkg[8] "
"command"
msgstr ""

#. type: Title ==
#: documentation/content/en/books/handbook/ports/_index.adoc:130
#, no-wrap
msgid "Using pkg for Binary Package Management"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:133
msgid ""
"man:pkg[8] provides an interface for manipulating\tpackages: registering, "
"adding, removing and upgrading packages."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:135
msgid ""
"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:138
msgid ""
"However, for those sites building from source a separate "
"crossref:ports[ports-upgrading-tools, port management tool] will be needed."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:141
msgid ""
"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: Title ===
#: documentation/content/en/books/handbook/ports/_index.adoc:143
#, no-wrap
msgid "Getting Started with pkg"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:147
msgid ""
"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: delimited block = 4
#: documentation/content/en/books/handbook/ports/_index.adoc:151
msgid ""
"An Internet working connection is required for the bootstrap process to "
"succeed."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:154
msgid "Run man:pkg[8] command line:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:158
#, no-wrap
msgid "# pkg\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:161
#: documentation/content/en/books/handbook/ports/_index.adoc:292
#: documentation/content/en/books/handbook/ports/_index.adoc:324
#: documentation/content/en/books/handbook/ports/_index.adoc:359
#: documentation/content/en/books/handbook/ports/_index.adoc:386
#: documentation/content/en/books/handbook/ports/_index.adoc:431
#: documentation/content/en/books/handbook/ports/_index.adoc:486
#: documentation/content/en/books/handbook/ports/_index.adoc:513
#: documentation/content/en/books/handbook/ports/_index.adoc:543
#: documentation/content/en/books/handbook/ports/_index.adoc:568
#: documentation/content/en/books/handbook/ports/_index.adoc:586
msgid "The output should be similar to the following:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:166
#, no-wrap
msgid ""
"The package management tool is not yet installed on your system.\n"
"Do you want to fetch and install it now? [y/N]\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:169
msgid ""
"man:pkg[7] will intercept the command, and when confirmed, downloads the "
"man:pkg[8] tarball, installs man:pkg[8] from it, bootstraps the local "
"package database and then proceeds to run the command originally requested."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:171
msgid ""
"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:174
msgid ""
"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:176
msgid ""
"Each pkg command argument is documented in a command-specific manual page."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:178
msgid ""
"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:182
#, no-wrap
msgid "# pkg help install\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:187
msgid ""
"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:189
#, no-wrap
msgid "Quarterly and Latest Ports Branches"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:198
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 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:200
msgid ""
"To switch man:pkg[8] from Quarterly to Latest run the following commands:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:205
#, no-wrap
msgid ""
"# mkdir -p /usr/local/etc/pkg/repos\n"
"# echo 'FreeBSD-ports: { url: \"pkg+https://pkg.FreeBSD.org/${ABI}/latest\" }' > /usr/local/etc/pkg/repos/FreeBSD.conf\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:208
msgid ""
"Then run this command to update the local package repositories catalogues "
"for the Latest branch:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:212
#, no-wrap
msgid "# pkg update -f\n"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/handbook/ports/_index.adoc:215
#, no-wrap
msgid "Kernel modules repositories"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:222
msgid ""
"The kernel module repositories allow users to install ready to use kernel "
"modules like the ones used for graphic drivers and specific hardware.  "
"Starting with FreeBSD 14.3, the FreeBSD Project provides kernel modules "
"built for every supported version. To create such a repository configuration "
"if it does not exist, add the following to [.filename]#/usr/local/etc/pkg/"
"repos/kmods.conf#:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:231
#, no-wrap
msgid ""
"FreeBSD-kmods: {\n"
"        url: \"pkg+https://pkg.FreeBSD.org/${ABI}/KMODSFLAVOR\",\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:234
msgid ""
"`KMODSFLAVOR` respects the following pattern: "
"`kmods_PORTBRANCH_MINORRELEASE`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:236
msgid "For instance:"
msgstr ""

#. type: Block title
#: documentation/content/en/books/handbook/ports/_index.adoc:237
#, no-wrap
msgid "Kmodsflavor"
msgstr ""

#. type: Table
#: documentation/content/en/books/handbook/ports/_index.adoc:241
#, no-wrap
msgid "FreeBSD Release"
msgstr ""

#. type: Table
#: documentation/content/en/books/handbook/ports/_index.adoc:241
#, no-wrap
msgid "ports main"
msgstr ""

#. type: Table
#: documentation/content/en/books/handbook/ports/_index.adoc:243
#, no-wrap
msgid "ports quarterly"
msgstr ""

#. type: Table
#: documentation/content/en/books/handbook/ports/_index.adoc:244
#, no-wrap
msgid "FreeBSD 14.2-RELEASE"
msgstr ""

#. type: Table
#: documentation/content/en/books/handbook/ports/_index.adoc:245
#, no-wrap
msgid "kmods_latest_2"
msgstr ""

#. type: Table
#: documentation/content/en/books/handbook/ports/_index.adoc:247
#, no-wrap
msgid "kmods_quarterly_2"
msgstr ""

#. type: Table
#: documentation/content/en/books/handbook/ports/_index.adoc:248
#, no-wrap
msgid "FreeBSD 14.3-RELEASE"
msgstr ""

#. type: Table
#: documentation/content/en/books/handbook/ports/_index.adoc:249
#, no-wrap
msgid "kmods_latest_3"
msgstr ""

#. type: Table
#: documentation/content/en/books/handbook/ports/_index.adoc:251
#, no-wrap
msgid "kmods_quarterly_3"
msgstr ""

#. type: Table
#: documentation/content/en/books/handbook/ports/_index.adoc:252
#, no-wrap
msgid "FreeBSD 14.3-STABLE"
msgstr ""

#. type: Table
#: documentation/content/en/books/handbook/ports/_index.adoc:253
#: documentation/content/en/books/handbook/ports/_index.adoc:257
#, no-wrap
msgid "kmods_latest"
msgstr ""

#. type: Table
#: documentation/content/en/books/handbook/ports/_index.adoc:255
#, no-wrap
msgid "kmods_quarterly"
msgstr ""

#. type: Table
#: documentation/content/en/books/handbook/ports/_index.adoc:256
#, no-wrap
msgid "FreeBSD 15.0-CURRENT"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/handbook/ports/_index.adoc:261
#, no-wrap
msgid "Configure pkg"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:265
msgid ""
"man:pkg.conf[5] is the system-wide configuration file used by the man: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:270
msgid ""
"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:273
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:276
msgid ""
"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:278
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:280
msgid ""
"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:282
#, no-wrap
msgid "Searching Packages"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:285
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:289
#, no-wrap
msgid "# pkg search nginx\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:309
#, no-wrap
msgid ""
"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:312
#, no-wrap
msgid "Installing and Fetching Packages"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:317
msgid ""
"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: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:321
#, no-wrap
msgid "# pkg install curl\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:331
#, no-wrap
msgid ""
"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: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:342
#, no-wrap
msgid ""
"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: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:344
#, no-wrap
msgid "Number of packages to be installed: 9\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:347
#, no-wrap
msgid ""
"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:349
#, no-wrap
msgid "Proceed with this action? [y/N]\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:352
msgid ""
"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:356
#, no-wrap
msgid "# pkg info\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:372
#, no-wrap
msgid ""
"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:376
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:380
#, no-wrap
msgid "# pkg fetch -d -o /usr/home/user/packages/ nginx-lite\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:383
msgid "`-d`: used to fetch all the dependencies"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:384
msgid "`-o`: used to specify the download directory"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:393
#, no-wrap
msgid ""
"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:397
#, no-wrap
msgid ""
"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:399
#, no-wrap
msgid "Number of packages to be fetched: 2\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:402
#, no-wrap
msgid ""
"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:404
#, no-wrap
msgid "Proceed with fetching packages? [y/N]:\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:407
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:411
#, no-wrap
msgid "# cd /usr/home/user/packages/\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:416
#, no-wrap
msgid "# pkg install nginx-lite-1.22.1,3.pkg\n"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/handbook/ports/_index.adoc:419
#, no-wrap
msgid "Obtaining Information About Installed Packages"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:422
msgid ""
"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: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:424
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:428
#, no-wrap
msgid "# pkg info pkg\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:457
#, no-wrap
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     : [email protected]\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:459
#, no-wrap
msgid "WWW: https://github.com/freebsd/pkg\n"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/handbook/ports/_index.adoc:462
#, no-wrap
msgid "Upgrading Installed Packages"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:465
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:469
#, no-wrap
msgid "# pkg upgrade\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:472
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:474
#, no-wrap
msgid "Auditing Installed Packages"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:479
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, use man:pkg-audit[8]:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:483
#, no-wrap
msgid "# pkg audit -F\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:498
#, 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:501
#, no-wrap
msgid "Removing Packages"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:504
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:506
msgid "For example:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:510
#, no-wrap
msgid "# pkg delete curl\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:518
#, 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:521
#, 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:523
#: documentation/content/en/books/handbook/ports/_index.adoc:553
#, no-wrap
msgid "Number of packages to be removed: 1\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:525
#, no-wrap
msgid "The operation will free 4 MiB.\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:529
#, 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:532
#, no-wrap
msgid "Automatically Removing Unused Packages"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:536
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 man:pkg-"
"autoremove[8]:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:540
#, no-wrap
msgid "# pkg autoremove\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:548
#, no-wrap
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:551
#, no-wrap
msgid ""
"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:555
#, no-wrap
msgid "The operation will free 723 KiB.\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:557
#, no-wrap
msgid "Proceed with deinstalling packages? [y/N]:\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:561
msgid ""
"Packages installed as dependencies are called _automatic_ packages.  Non-"
"automatic packages, i.e the packages that were explicitly 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:565
#, no-wrap
msgid "# pkg prime-list\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:574
#, no-wrap
msgid ""
"nginx\n"
"openvpn\n"
"sudo\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:579
msgid ""
"`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:583
#, no-wrap
msgid "# pkg prime-origins\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:592
#, no-wrap
msgid ""
"www/nginx\n"
"security/openvpn\n"
"security/sudo\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:595
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:597
msgid "Marking an installed package as automatic can be done using:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:601
#, no-wrap
msgid "# pkg set -A 1 devel/cmake\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:604
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:606
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:610
#, no-wrap
msgid "# pkg set -A 0 devel/cmake\n"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/handbook/ports/_index.adoc:613
#, no-wrap
msgid "Removing Stale Packages"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:618
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:622
#, no-wrap
msgid "# pkg clean\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:625
msgid "The entire cache may be cleared by running:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:629
#, no-wrap
msgid "# pkg clean -a\n"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/handbook/ports/_index.adoc:632
#, no-wrap
msgid "Locking and Unlocking Packages"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:638
msgid ""
"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:640
msgid "For example, to lock `nginx-lite`:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:644
#, no-wrap
msgid "# pkg lock nginx-lite\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:647
msgid "And to unlock `nginx-lite`:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:651
#, no-wrap
msgid "# pkg unlock nginx-lite\n"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/handbook/ports/_index.adoc:654
#, no-wrap
msgid "Modifying Package Metadata"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:659
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/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:661
msgid "To change the package origin for the above example, run:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:665
#, no-wrap
msgid "# pkg set -o lang/python3:lang/python311\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:668
msgid ""
"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:672
#, no-wrap
msgid "# pkg set -o lang/ruby31:lang/ruby32\n"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/handbook/ports/_index.adoc:678
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:682
#, no-wrap
msgid "# pkg install -Rf lang/ruby32\n"
msgstr ""

#. type: Title ==
#: documentation/content/en/books/handbook/ports/_index.adoc:686
#, no-wrap
msgid "Using the Ports Collection"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/handbook/ports/_index.adoc:690
msgid ""
"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:692
msgid ""
"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:699
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 the 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:705
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:707
#, 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:708
#, 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:709
#, 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:710
#, 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:711
#, 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:714
msgid ""
"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:717
msgid ""
"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:719
#, no-wrap
msgid "Installing the Ports Collection"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/handbook/ports/_index.adoc:723
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 the following method to install it:"
msgstr ""

#. type: delimited block * 4
#: documentation/content/en/books/handbook/ports/_index.adoc:728
#, no-wrap
msgid "*Procedure: Git Method*\n"
msgstr ""

#. type: delimited block * 4
#: documentation/content/en/books/handbook/ports/_index.adoc:732
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:735
msgid ""
"We add `--depth 1` to the git command line to clone the tree without "
"obtaining the commit history, which saves time and is acceptable for most "
"users.  When maintaining custom changes to the ports tree, or need the "
"history for any reason, omit the `--depth 1` argument below."
msgstr ""

#. type: delimited block * 4
#: documentation/content/en/books/handbook/ports/_index.adoc:737
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:742
#, 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:745
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:749
#, no-wrap
msgid "# pkg install git\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:752
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:756
#, no-wrap
msgid "# git clone --depth 1 https://git.FreeBSD.org/ports.git /usr/ports\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:759
msgid "Or, check out a copy of a quarterly branch:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:763
#, no-wrap
msgid "# git clone --depth 1 https://git.FreeBSD.org/ports.git -b 2023Q1 /usr/ports\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:766
msgid "As needed, update `/usr/ports` after the initial Git checkout:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:770
#, no-wrap
msgid "# git -C /usr/ports pull\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:773
msgid "As needed, switch `/usr/ports` to a different quarterly branch:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:778
#, no-wrap
msgid ""
"# git -C /usr/ports fetch --depth 1 origin 2023Q2:2023Q2\n"
"# git -C /usr/ports switch 2023Q2\n"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/handbook/ports/_index.adoc:781
#, no-wrap
msgid "Installing Ports"
msgstr ""

#. type: delimited block * 4
#: documentation/content/en/books/handbook/ports/_index.adoc:785
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:793
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.  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:797
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:800
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:822
#, 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:835
#, 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:839
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:844
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:847
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:853
#, 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:858
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:860
#, no-wrap
msgid "Customizing Ports Installation"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:868
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[] 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:874
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:881
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 allows 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:885
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:890
msgid ""
"For users who cannot be connected to the Internet all the time, `make fetch` "
"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:893
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 `Makefile`.  When using, specify the alternate "
"location:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:899
#, 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:902
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:906
#, no-wrap
msgid "# make WRKDIRPREFIX=/usr/home/example/ports install\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:909
msgid ""
"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:913
#, no-wrap
msgid "# make PREFIX=/usr/home/example/local install\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:916
msgid ""
"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:920
#, no-wrap
msgid "# make WRKDIRPREFIX=../ports PREFIX=../local install\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:923
msgid "will combine the two."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:926
msgid ""
"These can also be set as environmental variables.  Refer to the manual page "
"for the shell for instructions on how to set an environmental variable."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/handbook/ports/_index.adoc:928
#, no-wrap
msgid "Removing Installed Ports"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:932
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:934
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:942
#, 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:944
#, no-wrap
msgid "\tlsof-4.88.d,8\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:947
#, 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:952
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:954
#, no-wrap
msgid "Upgrading Ports"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:958
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:962
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 crossref:ports[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:966
#, no-wrap
msgid "# pkg version -l \"<\"\n"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/handbook/ports/_index.adoc:973
msgid ""
"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:976
#, no-wrap
msgid "Tools to Upgrade and Manage Ports"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:980
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:983
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:988
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 data before using any "
"of these tools."
msgstr ""

#. type: Title ====
#: documentation/content/en/books/handbook/ports/_index.adoc:991
#, no-wrap
msgid "Upgrading Ports Using Portmaster"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:996
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:1001
#, 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:1004
msgid "Portmaster defines four categories of ports:"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1006
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:1007
msgid "Trunk port: has no dependencies, but other ports depend upon it."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1008
msgid "Branch port: has dependencies and other ports depend upon it."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1009
msgid "Leaf port: has dependencies but no other ports depend upon it."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1011
msgid "To list these categories and search for updates:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:1032
#, 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:1035
#, 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:1038
msgid "This command is used to upgrade all outdated ports:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:1042
#, no-wrap
msgid "# portmaster -a\n"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/handbook/ports/_index.adoc:1052
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:1055
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:1059
#, no-wrap
msgid "# portmaster -af\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1063
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:1067
#, no-wrap
msgid "# portmaster shells/bash\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1070
msgid ""
"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:1072
#, no-wrap
msgid "Upgrading Ports Using Portupgrade"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/handbook/ports/_index.adoc:1077
msgid "Portupgrade is deprecated and will be removed in the near future."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1083
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:1088
#, 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:1091
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:1094
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:1098
#, no-wrap
msgid "# portupgrade -ai\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1102
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:1106
#, no-wrap
msgid "# portupgrade -R firefox\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1113
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:1117
#, no-wrap
msgid "# portupgrade -PP gnome3\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1121
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:1123
msgid ""
"More information about package:ports-mgmt/portupgrade[] may be found in its "
"`pkg-descr`."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/handbook/ports/_index.adoc:1125
#, no-wrap
msgid "Ports and Disk Space"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1131
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 `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:1135
#, no-wrap
msgid "# portsclean -C\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1139
msgid ""
"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:1143
#, no-wrap
msgid "# portsclean -D\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1146
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:1150
#, no-wrap
msgid "# portsclean -DD\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1153
msgid "If Portmaster is installed, use:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:1157
#, no-wrap
msgid "# portmaster --clean-distfiles\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1160
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:1162
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:1164
#, no-wrap
msgid "Building Packages with poudriere"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1171
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:1176
msgid ""
"poudriere is installed using the package:ports-mgmt/poudriere[] package or "
"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:1182
msgid ""
"While `ZFS` is not required on the system running poudriere, it is "
"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:1186
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:1188
#, no-wrap
msgid "Initialize Jails and Port Trees"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1194
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:1241
#, 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:1248
#, 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:1253
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:1257
msgid ""
"The basic configuration shown here puts a single jail-, port-, and set-"
"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:1259
msgid ""
"Packages to be built are entered in `13amd64-local-workstation-pkglist` "
"(ports with extref:{porters-handbook}flavors[FLAVORS] can be defined with "
"@FLAVOR):"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:1267
#, no-wrap
msgid ""
"editors/emacs\n"
"devel/git\n"
"devel/php-composer2@php82\n"
"ports-mgmt/pkg\n"
"...\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1270
msgid "Options and dependencies for the specified ports are configured:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:1274
#, 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:1277
msgid "Finally, packages are built and a package repository is created:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:1281
#, 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:1285
msgid ""
"While running, pressing kbd:[Ctrl+t] displays the current state of the "
"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:1287
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:1289
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:1290
#, no-wrap
msgid "Configuring pkg Clients to Use a poudriere Repository"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1295
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 `/usr/local/etc/pkg/"
"repos/FreeBSD.conf` that contains the following:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:1301
#, no-wrap
msgid ""
"FreeBSD: {\n"
"\tenabled: no\n"
"}\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1305
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: `/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:1308
msgid ""
"If the URL to the package repository is: `https://pkg.example.com/13amd64`, "
"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:1315
#, no-wrap
msgid ""
"custom: {\n"
"\turl: \"https://pkg.example.com/13amd64\",\n"
"\tenabled: yes,\n"
"}\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1318
msgid ""
"If exposing the package repository to the internet is not desired, the "
"`file://` protocol can be used to point to the repository directly:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:1325
#, no-wrap
msgid ""
"custom: {\n"
"\turl: \"file:///usr/local/poudriere/data/packages/11amd64\",\n"
"\tenabled: yes,\n"
"}\n"
msgstr ""

#. type: Title ==
#: documentation/content/en/books/handbook/ports/_index.adoc:1328
#, no-wrap
msgid "Post-Installation Considerations"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1332
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:1334
msgid ""
"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:1335
msgid ""
"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:1336
msgid ""
"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:1341
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:1344
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:1345
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:1347
#, no-wrap
msgid "Dealing with Broken Ports"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1350
msgid "When a port does not build or install, try the following:"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1352
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:1353
msgid ""
"Ask the maintainer of the port for help. Type `make maintainer` in the ports "
"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:1359
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-"
"[email protected][[email protected]].  Please take this into "
"account when sending an email."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/handbook/ports/_index.adoc:1362
msgid ""
"In particular, ports maintained by "
"mailto:[email protected][[email protected]] 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:1365
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:1366
msgid ""
"Fix it! The extref:{porters-handbook}[Porter's Handbook] includes detailed "
"information on the ports infrastructure, enabling the fixing of occasional "
"broken ports or the submission of new ones.  Install the package instead of "
"the port using the instructions in crossref:ports[pkgng-intro, Using pkg for "
"Binary Package Management]."
msgstr ""