The ports & packages collection does NOT go through the thorough security audit that OpenBSD follows. Although we strive to keep the quality of the packages collection high, we just do not have enough human resources to ensure the same level of robustness and security.
The port collection, originally borrowed from FreeBSD, fills this gap. The concept is to have, for each third-party software, a Makefile that controls
Packages are the binary equivalent of ports. A compiled port becomes a package that can be registered into the system using pkg_add(1).
Packages look like simple .tgz
bundles, but they should
always be added using
pkg_add(1),
as there might be some extra information that only
pkg_add(1)
knows how to handle.
Tip: you can distinguish between packages and .tgz bundles
using
pkg_info(1).
pkg_add pkgname.tgz
.
If you are grabbing packages off a single source (a package repository),
set PKG_PATH to that repository URL, in order to grab dependencies.
For instance, to install the gimp package for the 2.7 release on an i386 machine off the ftp site (including dependencies), do:
# setenv PKG_PATH ftp://ftp.openbsd.org/pub/OpenBSD/2.7/packages/i386/ # pkg_add ${PKG_PATH}gimp-1.1.17.tgz
As of OpenBSD 2.7, to update a package you must:
You can ftp the release version from the pub/OpenBSD/[version] (where [version] is the release number) directory on any of the ftp mirror sites. The release versions are the ones we ship on our CDROM, and have gone through more testing than any snapshot. Further information is available in the ports(7) man page.
The ports tree, like the rest of OpenBSD, is constantly changing. The normal life cycle of the ports tree is as follows:
The current ports tree may not be used with the previous release once the switch to tracking OpenBSD-current occurs. This is due to changes, typically with the port make process, that require code based upon the OpenBSD-current source tree. To get the latest version of the ports tree that will work with the previous release:
$ cd /usr/ports $ cvs -q -d anoncvs@some.anon.server:/cvs up -D 08/15/00 -PdChange the name of the server and cut-off date to fit your needs.
The ports that build with the 2.7 release have also been put into a branch of their own. Instead of grabbing the ports by date you can:
$ cd /usr/ports $ cvs -q -d anoncvs@some.anon.server:/cvs up -r OPENBSD_2_7 -PdThe OPENBSD_2_7 tag does not imply these ports are in any way `stable', only that the ports will build on a 2.7 system. Security fixes may be added to this branch.
The ports tree works as a single entity. Updating a single directory is
not guaranteed to work, as package dependencies may force you to update
and recompile vast portions of the ports tree.
It is strongly suggested that people don't track ports-current unless
they're prepared to deal with various problems.
Mailing lists such as
source-changes@openbsd.org
or
tech@openbsd.org
will probably be invaluable.
The ports-current tree can be retrieved via:
OpenBSD currently does not ship with XFree 4.0.x for various reasons.
This ports magic does not work with the XFree 4.0.x distribution.
You will need to apply the patch in
/usr/ports/infrastructure/patches/patch-xfree-4.0
to a default binary XFree 4.0.x distribution for it to work with the OpenBSD
ports tree.
Let's say you managed to get a ports tree and you want to compile and install the archiving utility unzip. You should be able to do something like this:
% cd /usr/ports/archivers/unzip % su # make # make install # exitEasy, huh ? Especially considering all that happened in the background:
In OpenBSD 2.7, a large proportion of the ports automatically build packages when installing. In OpenBSD current, almost all ports follow that standard.
As ports get built, the /usr/ports/distfiles directory gets filled with program sources, and /usr/ports/packages gets filled with binary packages. Users with low connectivity may refer to mirror-distfiles(7) for an efficient way to grab all distfiles at once. Note that the OpenBSD CD only include the ports tree and selected packages. If you wish to have the distfiles, you will have to get them through an independent way.
If you are interested in helping to expand the OpenBSD ports tree you should first read porting.html. That page references the porting section of the FreeBSD handbook as well as OpenBSD specific policies and hints.
If you have trouble with existing ports, or need information about creating new ports, please send e-mail to the OpenBSD ports mailing list, ports@openbsd.org. Corrections are always welcome, but in any case do please provide:
uname -a
,