The FreeBSD Ports collection is a package management system for the FreeBSD operating system . Ports in the collection vary with contributed software. There were 38,487 ports available in February 2020 and 36,504 in September 2024. It has also been adopted by NetBSD as the basis of its pkgsrc system.
17-405: The ports collection uses Makefiles arranged in a directory hierarchy so that software can be built , installed and uninstalled with the make command. When installing an application, very little (if any) user intervention is required after issuing a beginning command such as make install or make install clean in the ports directory of the desired application . In most cases the software
34-565: A database and weekly builds logs are also available through mailing list archives. These pre-compiled packages are separated into categories by the architectures for which they are available. Packages are further separated into several "release" directories, one for each current production release built from the ports collection and shipped with the release. These production release directories are never updated. There are also stable and current directories for several major release branches. These are updated more or less weekly. In most cases
51-461: A binary distribution model is that the installation can be tuned and optimized according to available resources. For example, the system administrator can easily install a 32 bit version of a package if the 64 bit version is not available or is not optimized for that machine. Conversely, the main disadvantage is compilation time, which can be significant. For example, a full installation of a FreeBSD system, using ports, can take several days, depending on
68-506: A collection of patches and files that overlay and modify the FreeBSD Ports, in order to generate DPorts. Ports collection Ports collections (or ports trees , or just ports ) are the sets of makefiles and patches provided by the BSD -based operating systems , FreeBSD , NetBSD , and OpenBSD , as a simple method of installing software or creating binary packages. They are usually
85-508: A package by passing the package name to the pkg install command. This downloads the appropriate package for the installed FreeBSD release version , then installs the application, including any software dependencies it may have. By default, packages are downloaded from the main FreeBSD Package Repository (pkg.freebsd.org), but if there are any troubles after updating packages, previous version of packages cannot be installed because
102-570: A package created for an older version of FreeBSD can be installed and used on a newer system without difficulty since binary backward compatibility across major releases is enabled by default. A packaging system for binary packages called pkg has replaced the package management system in FreeBSD 10. Jordan Hubbard committed his port make macros to the FreeBSD CVS repository on August 21, 1994. His package install suite Makefile had been committed
119-474: A year earlier (August 26, 1993). The core ports framework was at first maintained by Hubbard along with Satoshi Asami for several years. The Ports Management Team was later formed to handle this task. NetBSD's pkgsrc and OpenBSD's ports collection trace their roots to FreeBSD. Since its release, 3.6 DragonFly BSD project uses FreeBSD Ports as a base for its own DPorts ports collection. John Marino of DragonFly BSD project created DeltaPorts repository –
136-555: Is automatically downloaded from the Internet , patched and configured if necessary, then compiled , installed and registered in the package database. If the new port has needed dependencies on other applications or libraries, these are installed beforehand automatically. Most ports are already configured with default options which have been deemed generally appropriate for most users. However, these configuration options (called knobs ) can sometimes be changed before installation using
153-655: Is distinctive in that it aims to be portable and is usable on a number of operating systems aside from NetBSD itself, including the other BSDs, SmartOS / illumos , macOS , MINIX 3 , Linux and other Unix-likes . pkgsrc was created in August 1997 based on the existing FreeBSD ports system. It follows a quarterly release schedule and as of October 2018 contains over 22'000 packages. With their 1.4 release, DragonFly BSD announced that they would be adopting pkgsrc as their official package management system. DragonFly BSD however built their own ports implementation called dports with
170-509: The make config command, which brings up a text-based interface that allows the user to select the desired options. Historically, each port (or software package) has been maintained by an individual port maintainer who is responsible for ensuring the currency of the port and providing general support. Today, many ports are maintained by special task forces or sub-projects, each with a dedicated mailing list (e.g. kde@FreeBSD.org, java@FreeBSD.org, etc.), while unmaintained ports are assigned to
187-469: The base of a package management system , with ports handling package creation and additional tools managing package removal, upgrade, and other tasks. In addition to the BSDs, a few Linux distributions have implemented similar infrastructure , including Gentoo 's Portage , Arch 's Arch Build System (ABS) , CRUX 's Ports and Void Linux 's Templates. The main advantage of the ports system when compared with
SECTION 10
#1732869269238204-469: The generic group ports@FreeBSD.org. In general, anyone may become a port maintainer by contributing their favorite software to the collection. One may also choose to maintain an existing port with no active maintainer. Precompiled (binary) ports are called packages . A package can be created from the corresponding port with the make package command; pre-built packages are also available for download from FreeBSD-hosted package repositories. A user can install
221-412: The hardware. Jordan Hubbard committed his port make macros to the FreeBSD CVS repository on August 21, 1994. His package install suite Makefile had been committed a year earlier (August 26, 1993). The core ports framework was at first maintained by Hubbard along with Satoshi Asami for several years. The Ports Management Team was later formed to handle this task. NetBSD's pkgsrc ports collection
238-406: The lack of resources. This effectively forced users to run -current ports/base tree in order to keep up with security updates. In 2009, it was decided to revive the -stable ports tree under supervision of Robert Nagy and Jasper Lievisse Adriaanse. There are three unofficial web sites with a listing of OpenBSD ports and packages: DragonFly BSD Too Many Requests If you report this error to
255-501: The program to work on OpenBSD and a packing list listing the files to be included in the packages. The ports tree uses a set of standard makefiles, some of which are shared with the source tree, to provide the bulk of its functionality; this shared infrastructure includes many utility functions for port developers and means that ports can often be made very simply. In late October 2007, OpenBSD developer Nikolay Sturm announced that -stable ports tree should be considered unmaintained due to
272-498: The release 3.4 and switched over to it completely with 3.6. The development is done via their git. In contrast to FreeBSD Ports , on which it was originally based, the OpenBSD ports system is intended as a source used to create the end product, packages : installing a port first creates a package and then installs it. Ports are made up of a makefile, text files with descriptions and installation messages, any patches required to adjust
289-456: The repository denies subfolders indexes. In this case, a user must upgrade the OS version to the latest release and install latest packages. FreeBSD maintains a build farm called the pointyhat cluster in which all packages for all supported architectures and major releases are built. The build logs and known errors for all ports built into packages through the pointyhat cluster are available in
#237762