Ports collections (or ports trees, or just ports) are the sets of
makefile
In software development, Make is a command-line interface software tool that performs actions ordered by configured Dependence analysis, dependencies as defined in a configuration file called a ''makefile''. It is commonly used for build automati ...
s and
patches provided by the
BSD
The Berkeley Software Distribution (BSD), also known as Berkeley Unix or BSD Unix, is a discontinued Unix operating system developed and distributed by the Computer Systems Research Group (CSRG) at the University of California, Berkeley, beginni ...
-based
operating system
An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ...
s,
FreeBSD
FreeBSD is a free-software Unix-like operating system descended from the Berkeley Software Distribution (BSD). The first version was released in 1993 developed from 386BSD, one of the first fully functional and free Unix clones on affordable ...
,
NetBSD
NetBSD is a free and open-source Unix-like operating system based on the Berkeley Software Distribution (BSD). It was the first open-source BSD descendant officially released after 386BSD was fork (software development), forked. It continues to ...
, and
OpenBSD
OpenBSD is a security-focused operating system, security-focused, free software, Unix-like operating system based on the Berkeley Software Distribution (BSD). Theo de Raadt created OpenBSD in 1995 by fork (software development), forking NetBSD ...
, as a simple method of installing software or creating binary packages. They are usually the base of a
package management system
A package manager or package management system is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer in a consistent manner.
A package manager deals wi ...
, with ports handling package creation and additional tools managing package removal, upgrade, and other tasks. In addition to the BSDs, a few
Linux distribution
A Linux distribution, often abbreviated as distro, is an operating system that includes the Linux kernel for its kernel functionality. Although the name does not imply product distribution per se, a distro—if distributed on its own—is oft ...
s have implemented similar
infrastructure
Infrastructure is the set of facilities and systems that serve a country, city, or other area, and encompasses the services and facilities necessary for its economy, households and firms to function. Infrastructure is composed of public and pri ...
, including
Gentoo's
Portage,
Arch
An arch is a curved vertical structure spanning an open space underneath it. Arches may support the load above them, or they may perform a purely decorative role. As a decorative element, the arch dates back to the 4th millennium BC, but stru ...
's
Arch Build System (ABS),
CRUX
CRUX is a lightweight x86-64 Linux distribution targeted at experienced Linux users and delivered by a tar.gz-based package system with BSD-style initscripts. It is not based on any other Linux distribution. It also utilizes a ports system ...
's Ports and
Void Linux's Templates.
The main advantage of the ports system when compared with 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 the hardware.
FreeBSD Ports
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
NetBSD's ''pkgsrc'' ports collection 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
Illumos (stylized as "illumos") is a partly free and open-source Unix operating system. It has been developed since 2010 and is based on OpenSolaris, after the discontinuation of that product by Oracle. It comprises a kernel, device driver ...
,
macOS
macOS, previously OS X and originally Mac OS X, is a Unix, Unix-based operating system developed and marketed by Apple Inc., Apple since 2001. It is the current operating system for Apple's Mac (computer), Mac computers. With ...
,
MINIX 3,
Linux
Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
and other
Unix-like
A Unix-like (sometimes referred to as UN*X, *nix or *NIX) operating system is one that behaves in a manner similar to a Unix system, although not necessarily conforming to or being certified to any version of the Single UNIX Specification. A Uni ...
s. ''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
DragonFly BSD is a free and open-source Unix-like operating system forked from FreeBSD 4.8. Matthew Dillon, an Amiga developer in the late 1980s and early 1990s and FreeBSD developer between 1994 and 2003, began working on DragonFly BSD in ...
announced that they would be adopting ''pkgsrc'' as their official package management system.
DragonFly BSD
DragonFly BSD is a free and open-source Unix-like operating system forked from FreeBSD 4.8. Matthew Dillon, an Amiga developer in the late 1980s and early 1990s and FreeBSD developer between 1994 and 2003, began working on DragonFly BSD in ...
however built their own ports implementation called dports with the release 3.4 and switched over to it completely with 3.6. The development is done via their git.
OpenBSD ports
In contrast to
FreeBSD Ports
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 be ...
, 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 file
A text file (sometimes spelled textfile; an old alternative name is flat file) is a kind of computer file that is structured as a sequence of lines of electronic text. A text file exists stored as data within a computer file system.
In ope ...
s with descriptions and installation messages, any patches required to adjust 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 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:
openports.pl
* , originally announced as ports.openbsd.nu in 2006, was a custom-written web-site that does its own parsing of the ports tree structure and the updates, and has the functionality of tracking changes of a given port, having a shortcoming of not supporting some of the more complicated Makefile logic, and thus missing some 15% of packages that require the intricate knowledge of the ports tree structure and the use of the official tools. The project was discontinued in January 2023.
ports.su announced in February 2013 and is based on the official sqlports database,
thus having a complete collection of all the packages and flavours that are available for the amd64 platform. Being based on the official tools, the "virtual" (non-primary) categories are readily available, and so is the information about the library, build and run-time dependencies. The source of the web-site is heavily based on the ports-readmes port, and is readily available in
GitHub
GitHub () is a Proprietary software, proprietary developer platform that allows developers to create, store, manage, and share their code. It uses Git to provide distributed version control and GitHub itself provides access control, bug trackin ...
. The project is no longer updated since November 2018.
See also
*
Android Runtime
Android Runtime (ART) is an application runtime environment used by the Android operating system. Replacing Dalvik, the process virtual machine originally used by Android, ART performs the translation of some of the application's bytecode i ...
which does
ahead-of-time compilation
In computer science, ahead-of-time compilation (AOT compilation) is the act of compiling an (often) higher-level programming language into an (often) lower-level language before execution of a program, usually at build-time, to reduce the amount ...
at installation
*
MacPorts, used in
macOS
macOS, previously OS X and originally Mac OS X, is a Unix, Unix-based operating system developed and marketed by Apple Inc., Apple since 2001. It is the current operating system for Apple's Mac (computer), Mac computers. With ...
. The name and design is based on the ports system
*
Portage (software), used in
Gentoo Linux
Gentoo Linux (pronounced ) is a Linux distribution built using the Portage package management system. Unlike a binary software distribution, the source code is compiled locally according to the user's preferences and is often optimized for ...
and inspired by the ports system
References
External links
OpenBSD Porter's HandbookOpenBSD portsThe OpenBSD ports manpageFreeBSD PortsThe ideas behind Compile
{{Package management systems
Berkeley Software Distribution
Free package management systems