# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR The FreeBSD Project # This file is distributed under the same license as the FreeBSD Documentation package. # FIRST AUTHOR , YEAR. # #, 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 \n" "Language-Team: LANGUAGE \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 : 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: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-" "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:1362 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: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 ""