[Home]Tips/PkgsrcOnMac

Scalene Wiki | Tips | Recent Changes |

NetBSD pkgsrc & Mac OS X

Documenting the installation, configuration, and usage of NetBSD pkgsrc under Mac OS X.

Installation

Create two disk images

I use two separate disk images: one for compiling software and the other for installing software into. The advantage of separating this functionality is that the installation image (which is generally smaller) can be shared more easily between multiple systems.

The commands below create a sparse, growable filesystem.

 hdiutil create -fs HFSX -fsargs "-c c=64,a=16,e=16 -s" -volname pkgsrc -type SPARSE  -size 1024m -ov ~/pkgsrc
 hdiutil create -fs HFSX -fsargs "-c c=64,a=16,e=16 -s" -volname pkgsrc-bin -type SPARSE  -size 512m -ov ~/pkgsrc-bin

Mount the images

 hdiutil mount pkgsrc.sparseimage
 hdiutil mount pkgsrc-bin.sparseimage

Prepare OS

 sudo ln -s /Volumes/pkgsrc-bin /usr/pkg
 sudo ln -s /Volumes/pkgsrc /usr/pkg/src 

Install pkgsrc tree

 cd /Volumes
 cvs -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout pkgsrc
 cd /usr/pkg/src/bootstrap
 sudo ./bootstrap --workdir work --prefix /usr/pkg --pkgdbdir /usr/pkg/var/db --sysconfdir /usr/pkg/etc --varbase /usr/pkg/var

Edit mk.conf

My mk.conf is below- I prefer to use the pkgsrc version of OpenSSL.
 .ifdef BSD_PKG_MK       # begin pkgsrc settings

 PKG_DBDIR=              /usr/pkg/var/db
 LOCALBASE=              /usr/pkg
 VARBASE=                /usr/pkg/var
 PKG_TOOLS_BIN=          /usr/pkg/sbin
 PKGMANDIR=              man

 FETCH_CMD=                      /usr/pkg/bin/ftp
 TOOLS_PLATFORM.pax?=            /usr/pkg/bin/pax
 TOOLS_PLATFORM.tar?=            /usr/pkg/bin/tar
 USE_BUILTIN.openssl=YES
 
 .endif                  # end pkgsrc settings

Setting up the environment

I use a modified version of Fink's init.sh to configure the shell environment for pkgsrc. This file lives in /usr/pkg/bin/init.sh
#!/bin/sh

append_path()
{
  if ! eval test -z "\"\${$1##*:$2:*}\"" -o -z "\"\${$1%%*:$2}\"" -o -z "\"\${$1##$2:*}\"" -o -z "\"\${$1##$2}\"" ; then
    eval "$1=\$$1:$2"
  fi
}

prepend_path()
{
  if ! eval test -z "\"\${$1##*:$2:*}\"" -o -z "\"\${$1%%*:$2}\"" -o -z "\"\${$1##$2:*}\"" -o -z "\"\${$1##$2}\"" ; then
    eval "$1=$2:\$$1"
  fi
}

if [ -z "$PATH" ]; then
  PATH=/usr/pkg/bin:/usr/pkg/sbin:/bin:/sbin:/usr/bin:/usr/sbin
else
  prepend_path PATH /usr/pkg/bin:/usr/pkg/sbin
fi
export PATH

osMajorVer=`uname -r | cut -d. -f1`
osMinorVer=`uname -r | cut -d. -f2`
if [ -z "$MANPATH" ]; then
  if [ $osMajorVer -gt 7 ]; then
    MANPATH=`/usr/bin/manpath`
  else
    MANPATH=`/usr/bin/manpath -q`
  fi
fi
prepend_path MANPATH /usr/pkg/share/man:/usr/pkg/lib/perl5/man
export MANPATH

if [ -z "$INFOPATH" ]; then
  INFOPATH=/usr/pkg/info:/usr/share/info
else
  prepend_path INFOPATH /usr/pkg/info
fi
export INFOPATH

if [ -z "$PERL5LIB" ]; then
  PERL5LIB=/usr/pkg/lib/perl5
else
  prepend_path PERL5LIB /usr/pkg/lib/perl5
fi
export PERL5LIB

if [ -r /usr/X11R6/bin ]; then
    append_path PATH /usr/X11R6/bin
    export PATH
fi
if [ -r /usr/X11R6/man ]; then
    append_path MANPATH /usr/X11R6/man
    export MANPATH
fi

if [ -z "$DYLD_FALLBACK_LIBRARY_PATH" ]; then
  if [ $osMajorVer -eq 8 -a $osMinorVer -lt 3 ]; then
    DYLD_FALLBACK_LIBRARY_PATH=:
    export DYLD_FALLBACK_LIBRARY_PATH
  fi
fi

Build a package

I use the package target to install software - this way, a binary version of the package remains in ${PKGSRC}/packages.
 cd /usr/pkg/src
 cd editors/ce
 sudo bmake package

Scalene Wiki | Tips | Recent Changes |
This page is read-only | View other revisions
Last edited July 17, 2007 12:26 by Jason (diff)
Search: