📄 net-snmp-5.0.6-build
字号:
#!/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/DEVENVset -x # be verbose# set up the proper environmenttmp=`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" - hmpffprefix=${PREFIX:=/opt/OSS} && unset PREFIXPERL=${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 patchesawk /^___PAT/,/___EOF/ $0 | grep -v ^___ | patch -Nblp0 -z.orig# extract and create attached init fileawk /^___snmpd-init.d/,/___EOF/ $0 | grep -v ^___ | sed "s,@prefix@,$prefix,g" >|snmpd-init.d# configure# additional modules to build incat <<== | sed 's/#.*//' | tr -d '\012' | tr -s ' ' | read modules# additional (non-default) modules to loadhost # HOST-RESOURCED-MIBdisman/event-mib # DISMAN-EVENT-MIBsmux # SMUX supportucd-snmp/diskio # table of io-devices# below modules are not documented in configuremibII/mta_sendmail # MTA-MIB: very basic supportucd-snmp/dlmod # support for dynamically loadable modules#Rmon # RMON-MIB: what a surprise !!! seems 2b alpha#smux_gated # BGP-MIB ??==# additional transports to build intransports="Callback"[ "`uname -sr`" = "SunOS 5.9" ] && \ transports="$transports UDPIPv6 TCPIPv6" # Solaris 9 should support IPv6VARDIR=/var/snmp/agentLOGFILE=$VARDIR/snmpd.logecho "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 Makefilesfi$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 ???# postinstallLD_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 bechmod 0755 `find $tmp -type d` # directorieschmod 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`# packageversion=`./net-snmp-config --version`os=`uname -s`rel=`uname -r`class=snmpowner=$LOGNAMEgroups | awk '{print $1}' | read groupcat <<== >|pkginfoPKG="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"==. ./pkginfoecho 'checking dependencies'unset LD_LIBRARY_PATH # binaries and libraries should have RPATH now$TOP/../elfdepend.sh $tmp | grep -v "P *$PKG " >|depend # ignore own packageecho 'creating prototype file'cat <<== >|prototypei pkginfoi copyright=./COPYING#i preinstall=./preinstall-postremove#i postinstall=./preinstall-postremovei depend# set default mode, owner and group! default 0644 bin binf 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 environment\n"));! /** 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 environment\n"));! /** Check if the config handler found anything */! if (confmibdir == NULL) {! DEBUGMSGTL(("get_mib_directory", "no mib directories set by config\n"));! /** 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 config\n"));! 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/snmpdcase "$1" instart) [ ! -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 }" ;;esacexit 0___EOF___
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -