非rootユーザでのPorts

以前大学の共用機でPortsを使うためにでっち上げた非rootユーザでのPortsインストールスクリプト
今は使ってないので、動くか不明。

myports.csh

MYPORTS_DIRがPorts設定の保存先で、MYPORTS_PREFIXがインストール先。

set MYPORTS_DIR = $HOME/myports
set MYPORTS_PREFIX = $HOME/local

setenv	LD_LIBRARY_PATH	$MYPORTS_PREFIX/lib
setenv	PKG_CONFIG_PATH	$MYPORTS_PREFIX/lib/pkgconfig:$MYPORTS_PREFIX/libdata/pkgconfig
setenv	GST_PLUGIN_PATH	$MYPORTS_PREFIX/lib/gstreamer-0.10
setenv	PYTHONPATH	$MYPORTS_PREFIX/lib/python2.7/site-packages
setenv	LIBRARY_PATH	$MYPORTS_PREFIX/lib
setenv	CPATH	$MYPORTS_PREFIX/include
setenv	MANPATH	`manpath`:$MYPORTS_PREFIX/man

set options
set options = ( "$options"       PREFIX=$MYPORTS_PREFIX )
#set options = ( "$options"     PORTSDIR=$MYPORTS_DIR/ports )
set options = ( "$options"     PORTSDIR=/usr/ports )
set options = ( "$options"      DISTDIR=$MYPORTS_DIR/ports/distfiles )
set options = ( "$options" WRKDIRPREFIX=$MYPORTS_DIR/ports )
set options = ( "$options"    PKG_DBDIR=$MYPORTS_DIR/db/pkg )
set options = ( "$options"   PORT_DBDIR=$MYPORTS_DIR/db/ports )
set options = ( "$options"   \'LDCONFIG=/sbin/ldconfig -f $MYPORTS_DIR/run/ld-elf.so.hints\' )
set options = ( "$options"   BINOWN=$USER   BINGRP=$GROUP )
set options = ( "$options" SHAREOWN=$USER SHAREGRP=$GROUP )
set options = ( "$options"   MANOWN=$USER   MANGRP=$GROUP )
set options = ( "$options"   BINMODE=0755 )
set options = ( "$options" SHAREMODE=0644 )
set options = ( "$options"   MANMODE=0644 )
set options = ( "$options" INSTALL_AS_USER=yes )
set options = ( "$options" PYTHON_SITELIBDIR=$MYPORTS_PREFIX/lib/python2.7/site-packages )
set options = ( "$options" RUBY=$MYPORTS_PREFIX/bin/ruby )
#set options = ( "$options" TCL_INCLUDEDIR=$MYPORTS_PREFIX\''/include/tcl${TCL_VER}'\' )
#set options = ( "$options" TCL_LIBDIR=$MYPORTS_PREFIX\''/lib/tcl${TCL_VER}${_TCL_THREADS_SUFFIX}'\' )
#set options = ( "$options" TCLSH=$MYPORTS_PREFIX\''/bin/tclsh${TCL_VER}${_TCL_THREADS_SUFFIX}'\' )
#set options = ( "$options" TK_INCLUDEDIR=$MYPORTS_PREFIX\''/include/tk${TK_VER}'\' )
#set options = ( "$options" TK_LIBDIR=$MYPORTS_PREFIX\''/lib/tk${TK_VER}${_TCL_THREADS_SUFFIX}'\' )
#set options = ( "$options" WISH=$MYPORTS_PREFIX\''/bin/wish${TK_VER}${_TCL_THREADS_SUFFIX}'\' )
alias	pmk	make "$options"
unset options

#alias	portsnap	portsnap \
#	-f $MYPORTS_DIR/etc/portsnap.conf \
#	-d $MYPORTS_DIR/db/portsnap \
#	-p $MYPORTS_DIR/current

unset MYPORTS_DIR MYPORTS_PREFIX

準備

インストール先とPorts設定の保存先を作成する。

set MYPORTS_DIR = $HOME/myports
set MYPORTS_PREFIX = $HOME/local
mkdir $MYPORTS_DIR
mkdir $MYPORTS_PREFIX

ldconfigのヒントファイルを作成する。

ldconfig -r | grep search | sed 's/^.*: // ; s/:/\\
/g' > $MYPORTS_DIR/etc/ld-elf.so.conf
echo $MYPORTS_PREFIX/lib >> $MYPORTS_DIR/etc/ld-elf.so.conf
ldconfig -elf -f $MYPORTS_DIR/run/ld-elf.so.hints -i -R $MYPORTS_DIR/etc/ld-elf.so.conf

以下のコマンドで共有ライブラリが正しく認識されているか確認する。

ldconfig -r -f $MYPORTS_DIR/run/ld-elf.so.hints

使用方法

ccacheをインストールする例:

source myports.csh
cd /usr/ports/devel/ccache/
pmk install clean

インストールできないportも結構あるので注意。