.. title: pkgsrc on Linux - Quickstart Guide [DEPRECATED] .. slug: pkgsrc-on-linux-quickstart-guide .. date: 2014-10-28 03:56:15 UTC .. updated: 2017-03-25 19:29:16 UTC .. tags: linux, netbsd, pkgsrc, ubuntu .. link: .. description: .. type: text **WARNING** This is an old and unmaintained post. It has been superseded by `Essential pkgsrc - The Missing Mini Handbook `_. I highly encourage you to read the updated post. This post has not been removed so links from other sites don't break. 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. .. TEASER_END: Read more Get pkgsrc ------------------------------------- Install prerequisities. :: [user@host ~]$ sudo aptitude install build-essential libncurses-dev git 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 described in the pkgsrc guide. The second way, to use git, is also easy. `Jörg Sonnenberger `_ has created a GitHub repo that syncs with pkgsrc source. Here we're using the master (trunk) branch. You can choose to use the latest stable branch instead. Refer to `pkgsrc `_ for more information. :: [user@host ~/opt]$ git clone https://github.com/jsonn/pkgsrc.git I think I would prefer using git. Install pkgsrc ------------------------------------- Install pkgsrc to your home directory under ~/pkg. By default it installs system-wide but I don't want to do that in this guide. :: [user@host ~/opt]$ cd ~/opt/pkgsrc/bootstrap/ [user@host ~/opt/pkgsrc/bootstrap]$ export SH=/bin/bash [user@host ~/opt/pkgsrc/bootstrap]$ ./bootstrap --unprivileged Install pkg_* tools ------------------------------------- Let's install some tools to manage packages. :: [user@host ~/opt/pkgsrc/bootstrap] cd ~/opt/pkgsrc/pkgtools/pkg_install [user@host ~/opt/pkgsrc/pkgtools/pkg_install] ~/pkg/bin/bmake install clean clean-depends [user@host ~/opt/pkgsrc/pkgtools/pkg_install] cd ~/opt/pkgsrc/pkgtools/pkg_rolling-replace [user@host ~/opt/pkgsrc/pkgtools/pkg_rolling-replace] ~/pkg/bin/bmake install clean clean-depends [user@host ~/opt/pkgsrc/pkgtools/pkg_install] cd ~/opt/pkgsrc/pkgtools/pkg_chk [user@host ~/opt/pkgsrc/pkgtools/pkg_chk] ~/pkg/bin/bmake install clean clean-depends Add ~/pkg to PATH ------------------------------------- You may want to add ~/pkg/bin and ~/pkg/sbin to your PATH. :: [user@host ~]$ echo "export PATH=\$PATH:\$HOME/pkg/bin:\$HOME/pkg/sbin" >> ~/.bashrc [user@host ~]$ source ~/.bashrc Check for package vulnerabilities ------------------------------------- :: [user@host ~] pkg_admin -K ~/pkg/var/db/pkg fetch-pkg-vulnerabilities [user@host ~] pkg_admin audit Search Package ------------------------------------- Change to ~/opt/pksrc directory and use pkglocate to search for packages. For example, let's look for Bottle, a WSGI framework. :: [user@host ~]$ cd ~/opt/pksrc [user@host ~/opt/pksrc]$ ./pkglocate -i bottle Install Package ------------------------------------- Let’s install Bottle. Be prepared to wait a while because it'll pull in lots of dependencies that also need to be fetched, built, and installed. Change to the directory containing the Bottle package and install it. :: [user@host ~]$ cd ~/opt/pkgsrc/www/py-bottle To install you have two options: * Compile from source and install directly * Create a package after compiling from source and install package The first option is: :: [user@host ~/opt/pkgsrc/www/py-bottle]$ bmake install clean clean-depends The second option is: :: [user@host ~/opt/pkgsrc/www/py-bottle]$ env USE_DESTDIR=yes bmake package clean clean-depends [user@host ~/opt/pkgsrc/www/py-bottle]$ cd ~/opt/pkgsrc/packages/All [user@host ~/opt/pkgsrc/packages/All]$ pkg_add bottle-0.12.7.tgz Update Packages ------------------------------------- Follow these steps when you want to update a single package, say Bottle. :: [user@host ~]$ cd ~/opt/pkgsrc Pull in latest changes to pkgsrc. :: [user@host ~/opt/pkgsrc]$ git pull Update All Outdated Packages ************************************* There are two ways: pkg_rolling-replace or pkg_chk. pkg_chk first uninstalls all packages that need to be updated so may be more unsafe. pkg_rolling-replace on the other hand also removes packages before installing them but is a safer version. Read more on `how to upgrade packages `_. pkg_rolling-replace ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Add PKGSRC environment variable to ~/pkg/etc/mk.conf file. In the example below change /home/user/... to match your user. :: PKGSRCDIR= /home/user/opt/pkgsrc List updates: :: [user@host ~/opt/pkgsrc/]$ pkg_rolling-replace -u -n -v Update packages: :: [user@host ~/opt/pkgsrc/]$ pkg_rolling-replace -u -v pkg_chk ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ List packages that need to be updated. :: [user@host ~]$ pkg_chk -u -q Update all outdated packages. :: [user@host ~]$ pkg_chk -u -s Update Single Package ************************************* Follow these steps when you want to update a single package, say Bottle. Change to the directory containing the Bottle package and update it. :: [user@host ~/opt/pkgsrc]$ cd ~/opt/pkgsrc/www/py-bottle As with install you have two options: install directly or create a package first. To install directly: :: [user@host ~/opt/pkgsrc/www/py-bottle]$ bmake update clean clean-depends To create a package first: :: [user@host ~/opt/pkgsrc/www/py-bottle]$ env USE_DESTDIR=yes bmake package clean clean-depends [user@host ~/opt/pkgsrc/www/py-bottle]$ cd ~/opt/pkgsrc/packages/All [user@host ~/opt/pkgsrc/packages/All]$ pkg_add -u bottle-0.12.7.tgz List Installed Packages ------------------------------------- To get a list of all installed packages: :: [user@host ~]$ pkg_info -Q PKGPATH -a Delete Package ------------------------------------- Use pkg_delete to remove a package. :: [user@host ~]$ pkg_delete bottle You can uninstall a package and all its dependencies that are not needed by any other package. :: [user@host ~]$ pkg_delete -R bottle