OpenBSD Install Ports Tree Collection

Posted on in Categories , , last updated November 9, 2016

I have installed OpenBSD operating system but ports collection is missing at /usr/ports directory. How do I install ports from ftp / http site under OpenBSD?

Port collection is essential for OpenBSD server or desktop/laptop based system. You can use the OpenBSD Ports Collection to create binary packages for third party applications.
OpenBSD ports tree

Method # 1: Install ports from OpenBSD CDROM

If you have OpenBSD CDROM type the following command to copy out the contents of the ports tree to /usr/ports; you would mount the CD-ROM with ports on it on /cdrom and issue a command like follows:
# mount /cdrom
# cd /usr
# tar zxf /cdrom/ports.tar.gz

Method # 2: Install OpenBSD ports from FTP / HTTP mirror site

Use wget command (not installed by default on OpenBSD) or ftp command client and grab ports.tar.gz, enter:
$ cd ## go to home dir ##
$ wget http://ftp.usa.openbsd.org/pub/OpenBSD/$(uname -r)/ports.tar.gz
$ wget http://ftp.usa.openbsd.org/pub/OpenBSD/$(uname -r)/SHA256.sig

OR use the ftp command:
$ cd ## go to home dir ##
$ ftp http://ftp.usa.openbsd.org/pub/OpenBSD/$(uname -r)/ports.tar.gz
$ ftp http://ftp.usa.openbsd.org/pub/OpenBSD/$(uname -r)/SHA256.sig

OR use OpenBSD mirror from here:
$ cd ## go to home dir ##
$ ftp ftp://mirror.planetunix.net/pub/OpenBSD/$(uname -r)/ports.tar.gz
$ ftp ftp://mirror.planetunix.net/pub/OpenBSD/$(uname -r)/SHA256.sig

Sample output:

--11:44:39--  ftp://ftp.openbsd.org/pub/OpenBSD/6.0/ports.tar.gz
           => `ports.tar.gz'
Resolving ftp.openbsd.org... 129.128.5.191
Connecting to ftp.openbsd.org|129.128.5.191|:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD /pub/OpenBSD/6.0 ... done.
==> PASV ... done.    ==> RETR ports.tar.gz ... done.
Length: 11,184,931 (11M) (unauthoritative)
 
100%[=================================================================================================================>] 11,184,931   236.83K/s    ETA 00:00
 
11:45:29 (230.09 KB/s) - `ports.tar.gz' saved [11184931]

Extract ports tree on a OpenBSD

Verify ports.tar.gz file with signify command, enter:
## match your openbsd version here (openbsd-60-base.pub) ##
$ signify -C -p /etc/signify/openbsd-60-base.pub -x SHA256.sig ports.tar.gz

Sample outputs:

Signature Verified
ports.tar.gz: OK

To extract ports.tar.gz use the tar command as root user:
# tar -zxvf ports.tar.gz -C /usr/
Sample outputs:

ports
ports/CVS
ports/CVS/Repository
ports/CVS/Entries
ports/.cvsignore
ports/INDEX
ports/Makefile
ports/README
ports/archivers
ports/archivers/CVS
ports/archivers/CVS/Repository
ports/archivers/CVS/Entries
....
..
...
ports/x11/yeahlaunch/pkg
ports/x11/yeahlaunch/pkg/CVS
ports/x11/yeahlaunch/pkg/CVS/Repository
ports/x11/yeahlaunch/pkg/CVS/Entries
ports/x11/yeahlaunch/pkg/DESCR
ports/x11/yeahlaunch/pkg/PLIST

Once extracted, you can delete ports.tar.gz file using rm command as follows:
$ rm ports.tar.gz SHA256.sig

How do I use ports on a OpenBSD?

To use ports, cd into /usr/ports/ directory:
$ cd /usr/ports
$ ls

Sample outputs:

.cvsignore      biology         emulators       lang            productivity
CVS             books           fonts           mail            security
INDEX           cad             games           math            shells
Makefile        chinese         geo             meta            sysutils
README          comms           graphics        misc            telephony
archivers       converters      infrastructure  multimedia      tests
astro           databases       inputmethods    net             textproc
audio           devel           japanese        news            www
base            editors         java            plan9           x11
benchmarks      education       korean          print

To install bash shell from ports (or configure user with proper file permissions as described in the official docs), type:
# cd /usr/ports/shells/bash
# make install clean all

How do I search the ports tree?

Use the following syntax:
$ cd /usr/ports
$ make search key={KEY-WORD-HERE}

To search for php-gd package, enter:
$ make search key=php-gd
Sample outputs:

Port:   php-gd-5.5.37p0
Path:   lang/php/5.5,-gd
Info:   image manipulation extensions for php5
Maint:  Robert Nagy <[email protected]>
Index:  lang www
L-deps: devel/t1lib graphics/jpeg graphics/png
B-deps: archivers/bzip2 devel/autoconf/2.69 devel/metaauto www/apache-httpd
R-deps: php-5.5.37:lang/php/5.5
Archs:  any
 
Port:   php-gd-5.6.23p0
Path:   lang/php/5.6,-gd
Info:   image manipulation extensions for php5
Maint:  Robert Nagy <[email protected]>
Index:  lang www
L-deps: devel/t1lib graphics/jpeg graphics/png
B-deps: archivers/bzip2 devel/autoconf/2.69 devel/metaauto www/apache-httpd
R-deps: php-5.6.23:lang/php/5.6
Archs:  any
 
Port:   php-gd-7.0.8p0
Path:   lang/php/7.0,-gd
Info:   image manipulation extensions for php5
Maint:  Robert Nagy <[email protected]>
Index:  lang www
L-deps: graphics/jpeg graphics/png
B-deps: archivers/bzip2 devel/autoconf/2.69 devel/bison devel/metaauto www/apache-httpd
R-deps: php-7.0.8:lang/php/7.0
Archs:  any

You can install php-gd-7.0.8p0 using the following command:
# pkg_add php-gd-7.0.8p0
OR
# cd /usr/ports/lang/php/7.0/
# make install clean

References

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin and a trainer for the Linux operating system/Unix shell scripting. He has worked with global clients and in various industries, including IT, education, defense and space research, and the nonprofit sector. Follow him on Twitter, Facebook, Google+.

5 comment

  1. Thank you very much for this. I had trouble getting OpenBSD kicking with a GUI but with ports it is a snap. I used “ftp” however, instead of wget, as 4.5 did not come with wget by default. Cheers.

Leave a Comment