# $Id: README,v 2.3 2012/08/16 18:12:21 ksb Exp $ The recipe file "Makefile.host" here pulls the current master source for almost every tool you'd want into your home directory and builds them in the correct order. It fixes the library paths in each tool to reference your copy (rather than any older/newer installed copies) so the explode, mkcmd, and distrib files you see are the ones you installed. Local admins should mirror a stable copy of their master source on a separate host from the ever-changing hub of development. That's not a requirement, but it keeps things sane. On that host build a shadow copy of the Makefile.host in this directory for each platform you support (I build SUN5, FREEBSD, HPUX11 and such). On a pull client host rsync|scp|ftp|muxcat the apropos shadow file into a mortal logins home directory as "Makefile". So on the master pull source host you need an rsync report and msrcmux installed. You might have to build the reverse IP hook, see the HTML document on msrcmux for details. On a machine you which to update via pull ----------------------------------------- Export your 'master pull source' host/CNAME in $MPS, and the name of your pull configuration file in $CFG (to override the recipe defaults): $ export MPS=msrc.example.com CFG=site.cf If the service if not called "msrcmux" then override $MSRCMUX in the environment or recipe file: $ export MSRCMUX=msrctest Forgetting to put the -e option in the make spells in each line is common, so I actually find it easier to vi the recipe and change the values listed there. I use perl to boot muxcat, so you need a working perl-5 (5.8 works 5.12 is a lot better). Find the location the perl on your system and make sure perl and h2ph are in your path. Then update your .profile (aka .bashrc, .kshrc, or .login for csh folks) $ vi ~/.profile export PERL5LIB=$HOME/lib/perl5 export PATH=$HOME/usr/local/bin:$$HOME/usr/local/sbin:$$PATH The recipe file reminds you to do this, but you really need it done before the recipe file runs the first time. Login again, make sure $ echo $PERL5LIB $ echo $PATH You should be able to (note that "hosttype" is literally that): $ make -e hosttype to: get any required links to "cc" and "gcc" in your $PATH get a BSD compatible "install" in $PATH the "1d" and "muxcat" programs which the recipe needs to boot-strap possibly a link to "id" and "rsync" or other tools I don't think you need flex (lex) or bison -y (yacc) until you get up to cdecl. The recipe doesn't know how to install libpcap or libgdbm, which would be a plus (for scdpn, and oue). It won't hurt you to have them available sooner. It is *really* sad to see how long this takes on an older machine (compared to a modern computer). Then (as the mortal account) try: $ muxcat $MPS help | grep msrcmux msrcmux This indicates your "master pull source" exports the required service. If that didn't work you can't rsync to msrc.sac.fedex.com, use scp to push/pull muxcat to you bin. If perl is the issue I can't really help you. If you can get the muxcat tar blob, unpack it and copy muxcat.pl to ~/bin/muxcat. That might work for you (mayhap chmod +x). Close the loop on any errors. Then build msrc_base $ make -e msrc_base If that fails look at the temp file (/tmp/juggle1 by default) for an error from msrcmux. Usually it is an obvious issue with the name of the configuration file or the lack of a reverse IP mapping. At this point you *must* get a clean shell (mostly) since tracked aliases in your shell might confuse everything. I'd just logout and login again (or source your updated profile and hope for the best). Then build install_base $ make -e install_base Which tells you that you might make entomb_base, but that doesn't work unless you are root. So don't. Then get the list of level2 packages you might want: $ make -es ad-hoc-list | less Compile any you need, for example I'd build two just to check it out: $ make -e ~/usr/local/bin/oue ~/usr/local/bin/glob Check the versions: $ ~/usr/local/bin/glob -V glob: $Id: glob.m,v 1.7 2012/02/02 21:20:00 ksb Exp... $ /usr/local/bin/glob -V glob: $Id: glob.m,v 1.5 2008/10/28 14:00:49 ksb Exp... After you build what you want you may have to login again to clear tracked aliases in bash (unalias -t doesn't really work in bash). Let's just try everything and see what we get: $ make -es ad-hoc-list | xapply -fx 'make -e %1' - Then you have it all built, so you should cleanup. Either make clean in all, either: $ find ~/usr/src -name Makefile -print |\ xapply -fx -P2 'cd %[1/-$] && make clean' - or, if you really don't need the sources, remove them: $ rm -rf ~/usr/src The first dropped my disk usage from 124,140k to 103,512k (saving 20MiB). The second dropped my disk usage to 91,728k (saving 31MiB). Most of that space is ~/lib/perl5 because it has copied of all the C headers installed on the machine; if the local admins keep the copy in the default perl lib up-to-date you can save another 28,864k (28MiB). See the HTML document for a better description. That includes building a sentinel version of op in your ~/bin directory. I use that once in a while for pseudo users on hosts I do not admin. Summary ------- This worked for me recently, you should only have to change the first line for the hostname and config file path: export MPS=msrc.npcguild.com CFG=ksb.cf SHELL=/bin/ksh export TF=`mktemp /tmp/${USER-$LOGNAME}XXXXX` rsync $MPS::msrc/opt/ksb/home/Makefile.host Makefile make -e hosttype -e msrc_base install_base make -s ad-hoc-list | xapply -fx 'make -e %1' - make -e man-all rm -rf usr/src $TF And I had fresh tools in my account. Yay. --ksb, Aug 2012