FreeBSD Ports
Encyclopedia
The FreeBSD Ports collection is a package management system
Package management system
In software, a package management system, also called package manager, is a collection of software tools to automate the process of installing, upgrading, configuring, and removing software packages for a computer's operating system in a consistent manner...

 for the FreeBSD
FreeBSD
FreeBSD is a free Unix-like operating system descended from AT&T UNIX via BSD UNIX. Although for legal reasons FreeBSD cannot be called “UNIX”, as the direct descendant of BSD UNIX , FreeBSD’s internals and system APIs are UNIX-compliant...

 operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...

, providing an easy and consistent way of installing software packages. As of October 2011, there are over 22,700 ports available in the collection. It has also been adopted by NetBSD
NetBSD
NetBSD is a freely available open source version of the Berkeley Software Distribution Unix operating system. It was the second open source BSD descendant to be formally released, after 386BSD, and continues to be actively developed. The NetBSD project is primarily focused on high quality design,...

, as the basis of its pkgsrc
Pkgsrc
pkgsrc is a package management system for Unix-like operating systems. It was forked from the FreeBSD ports collection in 1997 as the primary package management system for NetBSD. Since then it has evolved independently: in 1999, support for Solaris was added, later followed by support for other...

 system.

Installing from source

The ports collection
Ports collection
Ports collections 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...

 uses Makefiles arranged in a directory hierarchy so that software can be built, installed
Installation (computer programs)
Installation of a program is the act of putting the program onto a computer system so that it can be executed....

 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 is automatically downloaded from the Internet
Internet
The Internet is a global system of interconnected computer networks that use the standard Internet protocol suite to serve billions of users worldwide...

, patched
Patch (computing)
A patch is a piece of software designed to fix problems with, or update a computer program or its supporting data. This includes fixing security vulnerabilities and other bugs, and improving the usability or performance...

 and configured if necessary, then compiled
Compiler
A compiler is a computer program that transforms source code written in a programming language into another computer language...

, 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 tweaked before installation using the make config command, which brings up an ncurses
Ncurses
ncurses is a programming library that provides an API which allows the programmer to write text user interfaces in a terminal-independent manner. It is a toolkit for developing "GUI-like" application software that runs under a terminal emulator...

-based interface that allows the user to graphically 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
Mailing list
A mailing list is a collection of names and addresses used by an individual or an organization to send material to multiple recipients. The term is often extended to include the people subscribed to such a list, so the group of subscribers is referred to as "the mailing list", or simply "the...

 (e.g. kde@FreeBSD.org, java@FreeBSD.org, etc.), while unmaintained ports are assigned to the generic group ports@FreeBSD.org. In general, anyone is welcome to become a port maintainer by contributing their favorite software to the collection. One may also choose to adopt and maintain an existing port if it currently has no maintainer. Information on how to create and maintain ports can be found in the Porter's Handbook.

Packages

Precompiled (binary) ports are called packages. A package can be obtained from the corresponding port with make package command; prebuilt packages are also available for download from the FreeBSD servers. A user can automatically install a package by passing the package name to the pkg_add -r command. This downloads the appropriate package for the user's release version of FreeBSD, then installs the application along with any software dependencies it may have. By default, this command downloads packages from the main FreeBSD distribution site.

FreeBSD maintains a build farm
Compile farm
A compile farm is a server farm, a collection of one or more servers, which has been set up to compile computer programs remotely for various reasons...

 called the pointyhat cluster in which all packages for all supported architectures and major releases are built. The build logs
Server log
A server log is a log file automatically created and maintained by a server of activity performed by it.A typical example is a web server log which maintains a history of page requests. The W3C maintains a standard format for web server log files, but other proprietary formats exist...

 and known errors for all ports built into packages through the pointyhat cluster are available in a database
Database
A database is an organized collection of data for one or more purposes, usually in digital form. The data are typically organized to model relevant aspects of reality , in a way that supports processes requiring this information...

.

These precompiled 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 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.

History

Jordan Hubbard
Jordan Hubbard
Jordan K. Hubbard is a long-time open source developer, authoring software like the Ardent Window Manager and various other open source tools and libraries before finally co-founding the FreeBSD project. He started the FreeBSD project in 1993 with Nate Williams and Rodney W. Grimes, also creating...

 committed his port make macros to the FreeBSD CVS repository on August 21, 1994. His package install suite 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.

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK