net-snmp-5.0.6-build
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:14k
- #!/bin/ksh
- #
- # automatic build (configure/make/package) script
- # for NET-SNMP on Solaris
- #
- # request for contribution
- # https://sourceforge.net/tracker/?func=detail&atid=112694&aid=596250&group_id=12694
- #
- # 2002/11 Stefan.Radman@CTBTO.ORG
- #
- # this script still requires customization to your own environment (see DEVENV)
- # do not run it if you dont know what you are doing
- #
- . $TOP/DEVENV
- set -x # be verbose
- # set up the proper environment
- tmp=`pwd`/pkgroot
- #trap 's=$?; rm -rf $tmp $tmp; exit $s' EXIT
- # NET-SNMP uses the PREFIX environment variable differently - avoid it
- # it would collide with the NET-SNMP PREFIX during "make test" - hmpff
- prefix=${PREFIX:=/opt/OSS} && unset PREFIX
- PERL=${PERL:=`which perl`}
- MAKE=${MAKE:=`which make`}
- # cleanup on demand
- ${MAKE:=make} ${@:-nothing} # or distclean or whatever
- [ "$1" = distclean ] && rm -rf $tmp prototype depend pkginfo postinstall config.cache snmpd-init.d
- # preload attached config cache to ignore RPM-related stuff on solaris
- [ -f config.cache ] || awk /^___config.cache/,/___EOF/ $0 | grep -v ^___ >config.cache
- # extract and apply attached patches
- awk /^___PAT/,/___EOF/ $0 | grep -v ^___ | patch -Nblp0 -z.orig
- # extract and create attached init file
- awk /^___snmpd-init.d/,/___EOF/ $0 | grep -v ^___ | sed "s,@prefix@,$prefix,g" >|snmpd-init.d
- # configure
- # additional modules to build in
- cat <<== | sed 's/#.*//' | tr -d ' 12' | tr -s ' ' | read modules
- # additional (non-default) modules to load
- host # HOST-RESOURCED-MIB
- disman/event-mib # DISMAN-EVENT-MIB
- smux # SMUX support
- ucd-snmp/diskio # table of io-devices
- # below modules are not documented in configure
- mibII/mta_sendmail # MTA-MIB: very basic support
- ucd-snmp/dlmod # support for dynamically loadable modules
- #Rmon # RMON-MIB: what a surprise !!! seems 2b alpha
- #smux_gated # BGP-MIB ??
- ==
- # additional transports to build in
- transports="Callback"
- [ "`uname -sr`" = "SunOS 5.9" ] &&
- transports="$transports UDPIPv6 TCPIPv6" # Solaris 9 should support IPv6
- VARDIR=/var/snmp/agent
- LOGFILE=$VARDIR/snmpd.log
- echo "Configuring for $prefix"
- [ -f Makefile ] || ./configure --prefix=$prefix
- --with-defaults
- --enable-shared
- --enable-static
- --enable-ucd-snmp-compatibility
- --with-sys-contact="unknown"
- --with-sys-location="unknown"
- --with-transports="$transports"
- --with-mib-modules="$modules"
- --without-root-access
- --with-openssl=$prefix
- --with-persistent-directory=$VARDIR
- --with-logfile=$LOGFILE
- --with-default-snmp-version=1
- --with-perl-modules
- --enable-embedded-perl
- || exit
- # --with-ldflags="-R $prefix/lib"
- # for production (or not?):
- # --with-libwrap
- # following causes "`__builtin_va_alist' undeclared", still in 5.0
- # and "symbol `setenv' is multiply-defined" only in 5.0
- # --with-libwrap=/usr
- # wont build without kerberos 5 (krb5.h && libraries)
- # --with-security-modules="ksm"
- # we will keep ucd-snmp compatibility for a while
- # procfs (needed by agent) not supported in largefile enviropnment
- # (usually caused by --enable-embedded-perl)
- if grep _LARGEFILE_SOURCE config.status 1>&- 2>&-
- then
- ${PERL:=`which perl`} -pi -e 's,-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64,,' config.status
- ./config.status # need to recreate Makefiles
- fi
- $MAKE depend || exit
- $MAKE || exit
- $MAKE test || exit
- # install to temporary package build root
- $MAKE
- prefix=$tmp$prefix
- exec_prefix=$tmp$prefix
- persistentdir=$tmp/$VARDIR
- INSTALLMAN1DIR=$tmp'$(PREFIX)/man/man1'
- INSTALLMAN3DIR=$tmp'$(PREFIX)/man/man3'
- INSTALLPRIVLIB=$tmp'$(PERL_LIB)'
- INSTALLARCHLIB=$tmp'$(ARCHLIB)'
- INSTALLSITELIB=$tmp'$(SITELIBEXP)'
- INSTALLSITEARCH=$tmp'$(SITEARCHEXP)'
- install || exit # tmp install
- [ -d $tmp$VARDIR ] || install -d -m 0755 $tmp$VARDIR # create persistent directory if it does not exist
- # we should try and replace the INSTALL*= with PREFIX=$tmp$perlprefix
- # see if it works. after having run the tests the PREFIX variable should not hurt any more
- # hmmm - probably the perl/SNMP tests will fail ???
- # postinstall
- LD_LIBRARY_PATH=$tmp$prefix/lib:$LD_LIBRARY_PATH $tmp$prefix/bin/snmptranslate
- -M$tmp$prefix/share/snmp/mibs -m SNMPv2-SMI .1 >&- || exit $? # create MIB index
- # to be honest: I dont know if below is still necessary - it used to be
- chmod 0755 `find $tmp -type d` # directories
- chmod 0755 `file `find $tmp -type f` | sed 's/: /;/' | egrep ';ELF |;executable' | cut -d';' -f1`
- chmod 0644 `file `find $tmp -type f` | sed 's/: /;/' | egrep -v ';ELF |;executable' | cut -d';' -f1`
- # package
- version=`./net-snmp-config --version`
- os=`uname -s`
- rel=`uname -r`
- class=snmp
- owner=$LOGNAME
- groups | awk '{print $1}' | read group
- cat <<== >|pkginfo
- PKG="OSSsnmp"
- NAME="net-snmp-$version"
- ARCH="`uname -p`"
- VERSION="$version, $os $rel, `date +%Y.%m.%d.%H.%M.%S`"
- CATEGORY="OpenSource"
- DESC="The NET-SNMP Tools and Library"
- VENDOR="http://net-snmp.sourceforge.net"
- CLASSES="$class"
- BASEDIR="$prefix"
- ==
- . ./pkginfo
- echo 'checking dependencies'
- unset LD_LIBRARY_PATH # binaries and libraries should have RPATH now
- $TOP/../elfdepend.sh $tmp | grep -v "P *$PKG " >|depend # ignore own package
- echo 'creating prototype file'
- cat <<== >|prototype
- i pkginfo
- i copyright=./COPYING
- #i preinstall=./preinstall-postremove
- #i postinstall=./preinstall-postremove
- i depend
- # set default mode, owner and group
- ! default 0644 bin bin
- f snmp /etc/init.d/snmpd=./snmpd-init.d 0755 root sys
- #l snmp /etc/rc2.d/S76snmpd=/etc/init.d/snmpd # not yet
- ==
- pkgproto -c snmp $tmp=/ |
- egrep -v '^d .* / |^d .* /var |^d .* /opt |^ .*perllocal.pod=' |
- sed -e "s/ $owner $group$//"
- >>prototype || exit $?
- # and ignore top level directories (must pre-exist)
- echo 'creating package'
- pkgmk -od . || exit $?
- pkgtrans . $PKG-$version-$ARCH-$os$rel-pkgadd $PKG || exit $?
- echo "build was successfull"
- exit 0
- # here are the attached files and patches
- # they are extracted somehwere around the start of this script
- # when configure finds the rpm libraries and headers, it automatically
- # assumes that the native package manager is RPM and tries to build it into
- # the HOST-RESOURCES-MIB part of the agent
- # this is not intended on Solaris ...
- # the only way to get around this, is to preload config.cache
- ___config.cache___
- ac_cv_func_rpmGetPath=${ac_cv_func_rpmGetPath='no'}
- ac_cv_header_rpm_rpmio_h=${ac_cv_header_rpm_rpmio_h='no'}
- ac_cv_header_rpmio_h=${ac_cv_header_rpmio_h='no'}
- ac_cv_lib_bz2_BZ2_bzread=${ac_cv_lib_bz2_BZ2_bzread='no'}
- ac_cv_lib_bz2_bzread=${ac_cv_lib_bz2_bzread='no'}
- ac_cv_lib_db1_dbopen=${ac_cv_lib_db1_dbopen='no'}
- ac_cv_lib_db_3_1_db_create=${ac_cv_lib_db_3_1_db_create='no'}
- ac_cv_lib_db_dbopen=${ac_cv_lib_db_dbopen='no'}
- ac_cv_lib_popt_poptParseArgvString=${ac_cv_lib_popt_poptParseArgvString='no'}
- ac_cv_lib_rpm_rpmGetFilesystemList=${ac_cv_lib_rpm_rpmGetFilesystemList='no'}
- ac_cv_lib_rpmdb_rpmdbOpen=${ac_cv_lib_rpmdb_rpmdbOpen='no'}
- ac_cv_lib_rpmio_Fopen=${ac_cv_lib_rpmio_Fopen='no'}
- ac_cv_lib_z_gzread=${ac_cv_lib_z_gzread='no'}
- ___EOF___
- ___PATCHES___
- #
- # patch agent/Makefile.in to create share/snmp directory BEFORE installing
- # https://sourceforge.net/tracker/?group_id=12694&atid=112694&func=detail&aid=617891
- #
- *** ./agent/Makefile.in.orig Thu May 2 06:00:02 2002
- --- ./agent/Makefile.in Thu Oct 3 02:14:24 2002
- ***************
- *** 127,128 ****
- --- 127,129 ----
- embedperlinstall:
- + @$(SHELL) $(srcdir)/../mkinstalldirs $(snmplibdir)
- @$(INSTALL) $(srcdir)/snmp_perl.pl $(snmplibdir)/snmp_perl.pl
- #
- # patch local/Makefile.in to include missing mib2c.*.conf
- # https://sourceforge.net/tracker/?group_id=12694&atid=112694&func=detail&aid=627932
- #
- *** ./local/Makefile.in.orig Wed Jul 17 22:43:12 2002
- --- ./local/Makefile.in Thu Oct 24 09:47:00 2002
- ***************
- *** 19,20 ****
- --- 19,21 ----
- DATASRCS=mib2c.conf mib2c.iterate.conf mib2c.create-dataset.conf
- + mib2c.int_watch.conf mib2c.scalar.conf
- mib2c.array-user.conf mib2c.column_enums.conf
- #
- # fix a bug in mib.c that ignores the mibdirs config directive
- # https://sourceforge.net/tracker/?group_id=12694&atid=112694&func=detail&aid=628424
- #
- *** ./snmplib/mib.c.orig Thu Sep 26 15:10:06 2002
- --- ./snmplib/mib.c Fri Oct 25 02:47:55 2002
- ***************
- *** 2295,2302 ****
- dir = getenv("MIBDIRS");
- if (dir == NULL) {
- DEBUGMSGTL(("get_mib_directory", "no mib directories set by environmentn"));
- ! /** Not set use hard coded path */
- ! netsnmp_set_mib_directory(DEFAULT_MIBDIRS);
- } else if (*dir == '+') {
- DEBUGMSGTL(("get_mib_directory", "mib directories set by environment (but added)n"));
- netsnmp_set_mib_directory(DEFAULT_MIBDIRS);
- --- 2295,2313 ----
- dir = getenv("MIBDIRS");
- if (dir == NULL) {
- DEBUGMSGTL(("get_mib_directory", "no mib directories set by environmentn"));
- ! /** Check if the config handler found anything */
- ! if (confmibdir == NULL) {
- ! DEBUGMSGTL(("get_mib_directory", "no mib directories set by confign"));
- ! /** Not set use hard coded path */
- ! netsnmp_set_mib_directory(DEFAULT_MIBDIRS);
- ! } else if (*confmibdir == '+') {
- ! DEBUGMSGTL(("get_mib_directory", "mib directories set by config (but added)n"));
- ! netsnmp_set_mib_directory(DEFAULT_MIBDIRS);
- ! netsnmp_set_mib_directory(confmibdir);
- ! } else {
- ! DEBUGMSGTL(("get_mib_directory", "mib directories set by confign"));
- ! netsnmp_set_mib_directory(confmibdir);
- ! }
- } else if (*dir == '+') {
- DEBUGMSGTL(("get_mib_directory", "mib directories set by environment (but added)n"));
- netsnmp_set_mib_directory(DEFAULT_MIBDIRS);
- #
- # patch sedscript.in and man/snmpcmd.1.def
- # environment var name was replaced by path in the manpages
- # https://sourceforge.net/tracker/?func=detail&atid=112694&aid=635022&group_id=12694
- #
- *** ./sedscript.in.orig Sat Oct 5 21:42:14 2002
- --- ./sedscript.in Thu Nov 7 15:52:04 2002
- ***************
- *** 4,5 ****
- --- 4,6 ----
- s#PREMOVEMEREFIX#PREFIX#g
- + s#PREMOVEME@REFIX#PREMOVEMEREFIX#g
- s#DREMOVEMEATADIR#DATADIR#g
- *** ./man/snmpcmd.1.def.orig Wed Jun 5 11:43:26 2002
- --- ./man/snmpcmd.1.def Thu Nov 7 15:50:50 2002
- ***************
- *** 492,494 ****
- lookup in a single "well known" place, built into the SNMP library (or
- ! specified by the PREFIX environment variable). The standard place
- is: .iso.org.dod.internet.mgmt.mib-2. The identifier may alternatively be
- --- 492,494 ----
- lookup in a single "well known" place, built into the SNMP library (or
- ! specified by the P@REFIX environment variable). The standard place
- is: .iso.org.dod.internet.mgmt.mib-2. The identifier may alternatively be
- ***************
- *** 513,515 ****
- .SH "ENVIRONMENT VARIABLES"
- ! .IP PREFIX
- The standard prefix for object identifiers (if using UCD-style output).
- --- 513,515 ----
- .SH "ENVIRONMENT VARIABLES"
- ! .IP P@REFIX
- The standard prefix for object identifiers (if using UCD-style output).
- #
- # snmpinform symbolic link should be relative instead of absolute
- # https://sourceforge.net/tracker/?group_id=12694&atid=112694&func=detail&aid=652587
- #
- *** ./apps/Makefile.in.orig Fri May 24 14:44:01 2002
- --- ./apps/Makefile.in Thu Dec 12 10:03:01 2002
- ***************
- *** 114,116 ****
- snmpinforminstall:
- ! rm -f $(bindir)/snmpinform$(EXEEXT)
- ! $(LN_S) $(bindir)/snmptrap$(EXEEXT) $(bindir)/snmpinform$(EXEEXT)
- --- 114,115 ----
- snmpinforminstall:
- ! ( cd $(bindir); rm -f snmpinform$(EXEEXT); $(LN_S) snmptrap$(EXEEXT) snmpinform$(EXEEXT) )
- #
- # patches to autoconf/automake files below are disabled because
- # autoconf 2.5x does not like net-snmp (or vice versa)
- #
- # patch configure.in to mention mibII/mta_sendmail in --help
- # https://sourceforge.net/tracker/?func=detail&atid=112694&aid=617508&group_id=12694
- #
- #*** configure.in.orig Mon Sep 9 13:09:07 2002
- #--- configure.in Thu Oct 24 12:05:06 2002
- #***************
- #*** 338,339 ****
- #--- 338,340 ----
- # tunnel Linux TUNNEL-MIB support (ifTable extension)
- #+ mibII/mta_sendmail MTA-MIB implementation for sendmail
- #
- # net-snmp-config not configclean
- # https://sourceforge.net/tracker/?func=detail&aid=654570&group_id=12694&atid=112694
- #
- #*** Makefile.in.orig Wed Sep 18 04:59:18 2002
- #--- Makefile.in Mon Dec 16 12:22:08 2002
- #***************
- #*** 150,152 ****
- # rm -f config.cache config.status config.log
- #! libtool include/net-snmp/net-snmp-config.h
- # rm -f mibs/.index
- #--- 150,153 ----
- # rm -f config.cache config.status config.log
- #! libtool include/net-snmp/net-snmp-config.h
- #! net-snmp-config
- # rm -f mibs/.index
- ___EOF___
- ___snmpd-init.d___
- #! /bin/sh
- #
- # start/stop the NET-SNMP master agent (snmpd)
- #
- # Location: /etc/init.d/snmpd
- # /etc/rc3.d/S??snmpd
- #
- name="NET-SNMP agent"
- daemon=@prefix@/sbin/snmpd
- case "$1" in
- start)
- [ ! -x $daemon ] && echo "ERROR: cannot start $name ($daemon)" && exit 1
- echo "Starting $name ... c"
- pid=`pgrep -fx $daemon`
- [ ! -z "$pid" ] && echo "already running with pid $pid." && exit 0
- $daemon && echo "done."
- ;;
- stop)
- echo "Stopping $name ... c"
- pkill -fx $daemon && echo "done." || echo "not running."
- ;;
- status)
- echo "$name is c"
- pid=`pgrep -fx $daemon`
- [ -z "$pid" ] && echo "not running" || echo "running with pid $pid"
- ;;
- restart)
- $0 stop && $0 start
- ;;
- reload)
- echo "Re-initializing $name ...c"
- pkill -HUP -fx $daemon && echo "done." || echo "not running."
- ;;
- *)
- echo "Usage: $0 { start | stop | status | restart | reload }"
- ;;
- esac
- exit 0
- ___EOF___