Subject: Re: (Fwd) Re: Packages (Re: xntpd)
To: Hubert Feyrer <>
From: Zdenek Salvet <>
List: tech-install
Date: 01/05/1996 11:07:09
> or should that be the other way round:
> 	/usr/local/archbin/mac68k/mtools-2.07/mdir
> 	/usr/local/bin/mdir -> ../../mtools-2.07/bin/mdir
> 	/usr/local/mtools-2.07 -> archbin/mac68k/mtools-2.07
> while i'm here i may as well say that i'd prefer package dirs to be put
> somewhere other than in the top of /usr/local/ - i like the sound of
> /usr/local/package/.

This is close to my setup (I'm managing 5 archs: NETBSD_386,SOL2_SPARC,
I use  /whatever/packages/{NETBSD_386,...}/pkgname-version/{bin,lib,...}
for machine/system dependent parts and
for machine/system independent parts as repository.
Then I mount or symlink the relevant part of repository on
/packages/run (MD) and /packages/share (MI).
E.g. server:/export/packages/NETBSD_386 on /packages/run
     server:/export/packages/share on /packages/share
I compile so that all hardcoded paths are /packages/{run,share}/pkgname-vers/* .
I solved the PATH,MANPATH problem by having symlinks in special package "links"
(e.g. /packages/run/links/bin/lynx -> /packages/run/lynx-2.4.2/bin/lynx).
For things that I don't want in default PATH I use "modules" package

A little info about modules follows, skip lines starting with *, if you
don't want to read it:

*  Usage:  module sub-command [args]
*    Available Commands and Usage:
*          +  add|load     modulefile [modulefile ...]
*          +  rm|unload    modulefile [modulefile ...]
*          +  switch       modulefile1 modulefile2
*          +  display      modulefile [modulefile ...]
*          +  avail        path [path]
*          +  use          dir [dir ...]
*          +  use -append  dir [dir ...]
*          +  unuse        dir [dir ...]
*          +  update
*          +  purge
*          +  list
*          +  clear
*          +  help         modulefile [modulefile ...]
*       SYNOPSIS
*            module [ sub-command ] [ sub-command-args ]
*            module is a user interface to the Modules package.  The
*            Modules package provides for the dynamic modification of a
*            user's environment via modulefiles.
*            Each modulefile contains the information needed to configure
*            the shell for an application.  Once the Modules package is
*            initialized, the environment can be modified on a per-module
*            basis using the module command which interprets modulefiles.
*            Typically modulefiles instruct the module command to alter
*            or set shell environment variables such as PATH, MANPATH,
*            etc.  modulefiles may be shared by many users on a system
*            and users may have their own collection to supplement or
*            replace the shared modulefiles.
*            The modulefiles are added to and removed from the current
*            environment by the user.  The environment changes contained
*            in a modulefile can be summarized through the module command
*            as well.  If no arguments are given, a summary of the module
*            usage and sub-commands are shown.
*            The action for the module command to take is described by
*            the sub-command and its associated arguments.
*  Example of my module: 
*  $ module disp graphics
*  -------------------------------------------------------------------
*  /packages/run/modules-2.0/modulefiles/graphics:
*  Append  /packages/run/xv-3.00a/bin to PATH
*  Append  /packages/share/xv-3.00a/man to MANPATH
*  Append  /packages/run/xpm-3.2g/bin to PATH
*  Append  /packages/share/xpm-3.2g/man to MANPATH
*  Append  /packages/share/xpm-3.2g/app-defaults/%N to XUSERFILESEARCHPATH
*  Append  /packages/run/xpaint-2.1.1/bin to PATH
*  Append  /packages/share/xpaint-2.1.1/man to MANPATH
*  Append  /packages/run/IMagick-3.6/lib to LD_LIBRARY_PATH

I can also use /packages/{run,share} as automount points and
compose package collection from multiple repositories.

This is part of my amd map for /packages :
share   type:=auto;fs:=${map};pref:=${key}/
share/gnuplot-3.5 rhost:=other;rfs:=/export/packages/share;sublink:=${/key}
share/* type:=linkx;fs:=/export/packages/share;sublink:=${/key}  \
run     type:=auto;fs:=${map};pref:=${key}/
run/*   type:=linkx;fs:=/export/packages/NETBSD_386;sublink:=${/key} \

With this setup I get MI parts of gnuplot from host "other" and everything
else from server unless it is installed locally
(in /export/packages/NETBSD_386). 

Zdenek Salvet                                     
           If God had meant for us to be in the Army,
         we would have been born with green, baggy skin.