pkgsrc on Linux – Quickstart Guide
July 3, 2014
A much more opinionated and updated guide is now on my new blog location. You should head over there instead.
Do you want to try out pkgsrc on Linux? Here’s a quickstart guide (tested on Ubuntu 14.04). Of course, always refer to the pkgsrc guide for accurate information.
Get pkgsrc
Install prerequisities.
user@host [~] $ sudo apt-get install build-essential libncurses-dev
Create directory structure in your home directory.
user@host [~] $ mkdir ~/opt
user@host [~] $ cd ~/opt
You have two options for getting pkgsrc: (1) the official ways: by downloading a tar file and extracting it, or by using CVS; (2) by using git. The first way, by using a tar file, is this:
Download pkgsrc and extract.
user@host [~/opt] $ curl -O http://ftp.netbsd.org/pub/pkgsrc/stable/pkgsrc.tar.gz
user@host [~/opt] $ tar xvzf pkgsrc.tar.gz
The second way, to use git, is also easy. Jörg Sonnenberger has created a GitHub repo that automatically syncs with pkgsrc source.
user@host [~/opt] $ git clone https://github.com/jsonn/pkgsrc.git
I think I would prefer using git.
Install and Setup pkgsrc
Install pkgsrc.
user@host [~/opt] $ cd ~/opt/pkgsrc/bootstrap/
user@host [~/opt/pkgsrc/bootstrap] $ export SH=/bin/bash
user@host [~/opt/pkgsrc/bootstrap] $ ./bootstrap --unprivileged
Post install steps.
user@host [~/opt/pkgsrc/bootstrap] $ cat >> ~/pkg/etc/security.local << EOF if [ -x $HOME/pkg/sbin/pkg_admin ]; then $HOME/pkg/sbin/pkg_admin audit fi EOF
user@host [~/opt/pkgsrc/bootstrap] $ echo "export PATH=\$PATH:\$HOME/pkg/bin:\$HOME/pkg/sbin" >> ~/.bashrc
user@host [~/opt/pkgsrc/bootstrap] $ source ~/.bashrc
user@host [~/opt/pkgsrc/bootstrap] $ pkg_admin -K ~/pkg/var/db/pkg fetch-pkg-vulnerabilities
user@host [~/opt/pkgsrc/bootstrap] $ echo 'alias pkgupvuln="\$HOME/pkg/sbin/pkg_admin -K ~/pkg/var/db/pkg fetch-pkg-vulnerabilities >/dev/null 2>&1"' >> ~/.bash_aliases
If you used git to get pkgsrc then move on to the next section.
If you did not use git to get pkgsrc then this is the best way going forward. Install CVS and update pkgsrc.
user@host [~/opt/pkgsrc/bootstrap] $ cd ~/opt/pkgsrc/devel/scmcvs/
user@host [~/opt/pkgsrc/devel/scmcvs] $ echo "export CVSEDITOR=vim" >> ~/.bashrc
user@host [~/opt/pkgsrc/devel/scmcvs] $ echo "export CVS_RSH=ssh" >> ~/.bashrc
user@host [~/opt/pkgsrc/devel/scmcvs] $ source ~/.bashrc
user@host [~/opt/pkgsrc/devel/scmcvs] $ bmake install clean clean-depends
user@host [~/opt/pkgsrc/devel/scmcvs] $ cd ~/opt/pkgsrc
user@host [~/opt/pkgsrc] $ cvs up -dP
user@host [~/opt/pkgsrc] $ cd ~/opt/pkgsrc/devel/scmcvs/
user@host [~/opt/pkgsrc/devel/scmcvs] $ bmake update
user@host [~/opt/pkgsrc/devel/scmcvs] $ bmake clean clean-depends
Install Package
Let’s install golang.
user@host [~/opt/pkgsrc] $ cd ~/opt/pkgsrc/lang/go
user@host [~/opt/pkgsrc/lang/go] $ bmake install clean clean-depends
Update Package
Follow these steps when you want to update a package, say golang.
user@host [~] $ pkg_admin -K ~/pkg/var/db/pkg fetch-pkg-vulnerabilities
user@host [~] $ cd ~/opt/pkgsrc
If you used git:
user@host [~/opt/pkgsrc] $ git pull
If you didn’t use git: user@host [~/opt/pkgsrc] $ cvs up -dP
user@host [~/opt/pkgsrc] $ cd ~/opt/pkgsrc/lang/go
user@host [~/opt/pkgsrc/lang/go] $ bmake update
user@host [~/opt/pkgsrc/lang/go] $ bmake clean clean-depends
Delete Package
You can uninstall a package and all its dependencies that are not needed by any other package.
user@host [~] $ pkg_delete -R go
Recent Comments