net-snmp-5.0.6-build
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:14k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. #!/bin/ksh
  2. #
  3. # automatic build (configure/make/package) script 
  4. # for NET-SNMP on Solaris
  5. #
  6. # request for contribution
  7. # https://sourceforge.net/tracker/?func=detail&atid=112694&aid=596250&group_id=12694
  8. #
  9. # 2002/11 Stefan.Radman@CTBTO.ORG
  10. #
  11. # this script still requires customization to your own environment (see DEVENV)
  12. # do not run it if you dont know what you are doing
  13. #
  14. . $TOP/DEVENV
  15. set -x # be verbose
  16. # set up the proper environment
  17. tmp=`pwd`/pkgroot
  18. #trap 's=$?; rm -rf $tmp $tmp; exit $s' EXIT
  19. # NET-SNMP uses the PREFIX environment variable differently - avoid it
  20. # it would collide with the NET-SNMP PREFIX during "make test" - hmpff
  21. prefix=${PREFIX:=/opt/OSS} && unset PREFIX
  22. PERL=${PERL:=`which perl`}
  23. MAKE=${MAKE:=`which make`}
  24. # cleanup on demand
  25. ${MAKE:=make} ${@:-nothing} # or distclean or whatever
  26. [ "$1" = distclean ] && rm -rf $tmp prototype depend pkginfo postinstall config.cache snmpd-init.d
  27. # preload attached config cache to ignore RPM-related stuff on solaris
  28. [ -f config.cache ] || awk /^___config.cache/,/___EOF/ $0 | grep -v ^___ >config.cache
  29. # extract and apply attached patches
  30. awk /^___PAT/,/___EOF/ $0 | grep -v ^___ | patch -Nblp0 -z.orig
  31. # extract and create attached init file
  32. awk /^___snmpd-init.d/,/___EOF/ $0 | grep -v ^___ | sed "s,@prefix@,$prefix,g" >|snmpd-init.d
  33. # configure
  34. # additional modules to build in
  35. cat <<== | sed 's/#.*//' | tr -d '12' | tr -s ' ' | read modules
  36. # additional (non-default) modules to load
  37. host                 # HOST-RESOURCED-MIB
  38. disman/event-mib     # DISMAN-EVENT-MIB
  39. smux                 # SMUX support
  40. ucd-snmp/diskio      # table of io-devices
  41. # below modules are not documented in configure
  42. mibII/mta_sendmail   # MTA-MIB: very basic support
  43. ucd-snmp/dlmod       # support for dynamically loadable modules
  44. #Rmon                # RMON-MIB: what a surprise !!! seems 2b alpha
  45. #smux_gated          # BGP-MIB ??
  46. ==
  47. # additional transports to build in
  48. transports="Callback"
  49. [ "`uname -sr`" = "SunOS 5.9" ] && 
  50.   transports="$transports UDPIPv6 TCPIPv6" # Solaris 9 should support IPv6
  51. VARDIR=/var/snmp/agent
  52. LOGFILE=$VARDIR/snmpd.log
  53. echo "Configuring for $prefix"
  54. [ -f Makefile ] || ./configure --prefix=$prefix 
  55.         --with-defaults 
  56.         --enable-shared 
  57.         --enable-static 
  58. --enable-ucd-snmp-compatibility 
  59.         --with-sys-contact="unknown" 
  60.         --with-sys-location="unknown" 
  61.         --with-transports="$transports" 
  62.         --with-mib-modules="$modules" 
  63.         --without-root-access 
  64.         --with-openssl=$prefix 
  65.         --with-persistent-directory=$VARDIR 
  66.         --with-logfile=$LOGFILE 
  67.         --with-default-snmp-version=1 
  68.         --with-perl-modules 
  69. --enable-embedded-perl 
  70. || exit 
  71. #        --with-ldflags="-R $prefix/lib" 
  72. # for production (or not?):
  73. #        --with-libwrap 
  74. # following causes "`__builtin_va_alist' undeclared", still in 5.0
  75. # and "symbol `setenv' is multiply-defined" only in 5.0
  76. #        --with-libwrap=/usr
  77. # wont build without kerberos 5 (krb5.h && libraries)
  78. #       --with-security-modules="ksm" 
  79. # we will keep ucd-snmp compatibility for a while
  80. # procfs (needed by agent) not supported in largefile enviropnment
  81. # (usually caused by --enable-embedded-perl)
  82. if grep _LARGEFILE_SOURCE config.status 1>&- 2>&-
  83. then
  84.   ${PERL:=`which perl`} -pi -e 's,-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64,,' config.status
  85.   ./config.status # need to recreate Makefiles
  86. fi
  87. $MAKE depend || exit
  88. $MAKE || exit
  89. $MAKE test || exit
  90. # install to temporary package build root
  91. $MAKE 
  92. prefix=$tmp$prefix 
  93. exec_prefix=$tmp$prefix 
  94. persistentdir=$tmp/$VARDIR 
  95.         INSTALLMAN1DIR=$tmp'$(PREFIX)/man/man1' 
  96.         INSTALLMAN3DIR=$tmp'$(PREFIX)/man/man3' 
  97. INSTALLPRIVLIB=$tmp'$(PERL_LIB)' 
  98. INSTALLARCHLIB=$tmp'$(ARCHLIB)' 
  99. INSTALLSITELIB=$tmp'$(SITELIBEXP)' 
  100. INSTALLSITEARCH=$tmp'$(SITEARCHEXP)' 
  101. install || exit # tmp install
  102. [ -d $tmp$VARDIR ] || install -d -m 0755 $tmp$VARDIR # create persistent directory if it does not exist
  103. # we should try and replace the INSTALL*= with PREFIX=$tmp$perlprefix
  104. # see if it works. after having run the tests the PREFIX variable should not hurt any more
  105. # hmmm - probably the perl/SNMP tests will fail ???
  106. # postinstall
  107. LD_LIBRARY_PATH=$tmp$prefix/lib:$LD_LIBRARY_PATH $tmp$prefix/bin/snmptranslate 
  108.   -M$tmp$prefix/share/snmp/mibs -m SNMPv2-SMI .1 >&- || exit $? # create MIB index
  109. # to be honest: I dont know if below is still necessary - it used to be
  110. chmod 0755 `find $tmp -type d` # directories
  111. chmod 0755 `file `find $tmp -type f` | sed 's/: /;/' | egrep ';ELF |;executable' | cut -d';' -f1`
  112. chmod 0644 `file `find $tmp -type f` | sed 's/: /;/' | egrep -v ';ELF |;executable' | cut -d';' -f1`
  113. # package
  114. version=`./net-snmp-config --version`
  115. os=`uname -s`
  116. rel=`uname -r`
  117. class=snmp
  118. owner=$LOGNAME
  119. groups | awk '{print $1}' | read group
  120. cat <<== >|pkginfo
  121. PKG="OSSsnmp"
  122. NAME="net-snmp-$version"
  123. ARCH="`uname -p`"
  124. VERSION="$version, $os $rel, `date +%Y.%m.%d.%H.%M.%S`"
  125. CATEGORY="OpenSource"
  126. DESC="The NET-SNMP Tools and Library"
  127. VENDOR="http://net-snmp.sourceforge.net"
  128. CLASSES="$class"
  129. BASEDIR="$prefix"
  130. ==
  131. . ./pkginfo
  132. echo 'checking dependencies'
  133. unset LD_LIBRARY_PATH # binaries and libraries should have RPATH now
  134. $TOP/../elfdepend.sh $tmp | grep -v "P  *$PKG " >|depend # ignore own package
  135. echo 'creating prototype file'
  136. cat <<== >|prototype
  137. i pkginfo
  138. i copyright=./COPYING
  139. #i preinstall=./preinstall-postremove
  140. #i postinstall=./preinstall-postremove
  141. i depend
  142. # set default mode, owner and group
  143. ! default 0644 bin bin
  144. f snmp /etc/init.d/snmpd=./snmpd-init.d 0755 root sys
  145. #l snmp /etc/rc2.d/S76snmpd=/etc/init.d/snmpd # not yet
  146. ==
  147. pkgproto -c snmp $tmp=/ |
  148. egrep -v '^d .* / |^d .* /var |^d .* /opt |^ .*perllocal.pod=' |
  149. sed -e "s/ $owner $group$//" 
  150. >>prototype || exit $?
  151. # and ignore top level directories (must pre-exist)
  152. echo 'creating package'
  153. pkgmk -od . || exit $?
  154. pkgtrans . $PKG-$version-$ARCH-$os$rel-pkgadd $PKG || exit $?
  155. echo "build was successfull"
  156. exit 0
  157. # here are the attached files and patches 
  158. # they are extracted somehwere around the start of this script
  159. # when configure finds the rpm libraries and headers, it automatically 
  160. # assumes that the native package manager is RPM and tries to build it into 
  161. # the HOST-RESOURCES-MIB part of the agent
  162. # this is not intended on Solaris ...
  163. # the only way to get around this, is to preload config.cache
  164. ___config.cache___
  165. ac_cv_func_rpmGetPath=${ac_cv_func_rpmGetPath='no'}
  166. ac_cv_header_rpm_rpmio_h=${ac_cv_header_rpm_rpmio_h='no'}
  167. ac_cv_header_rpmio_h=${ac_cv_header_rpmio_h='no'}
  168. ac_cv_lib_bz2_BZ2_bzread=${ac_cv_lib_bz2_BZ2_bzread='no'}
  169. ac_cv_lib_bz2_bzread=${ac_cv_lib_bz2_bzread='no'}
  170. ac_cv_lib_db1_dbopen=${ac_cv_lib_db1_dbopen='no'}
  171. ac_cv_lib_db_3_1_db_create=${ac_cv_lib_db_3_1_db_create='no'}
  172. ac_cv_lib_db_dbopen=${ac_cv_lib_db_dbopen='no'}
  173. ac_cv_lib_popt_poptParseArgvString=${ac_cv_lib_popt_poptParseArgvString='no'}
  174. ac_cv_lib_rpm_rpmGetFilesystemList=${ac_cv_lib_rpm_rpmGetFilesystemList='no'}
  175. ac_cv_lib_rpmdb_rpmdbOpen=${ac_cv_lib_rpmdb_rpmdbOpen='no'}
  176. ac_cv_lib_rpmio_Fopen=${ac_cv_lib_rpmio_Fopen='no'}
  177. ac_cv_lib_z_gzread=${ac_cv_lib_z_gzread='no'}
  178. ___EOF___
  179. ___PATCHES___
  180. #
  181. # patch agent/Makefile.in to create share/snmp directory BEFORE installing
  182. # https://sourceforge.net/tracker/?group_id=12694&atid=112694&func=detail&aid=617891
  183. #
  184. *** ./agent/Makefile.in.orig      Thu May  2 06:00:02 2002
  185. --- ./agent/Makefile.in   Thu Oct  3 02:14:24 2002
  186. ***************
  187. *** 127,128 ****
  188. --- 127,129 ----
  189.   embedperlinstall:
  190. +    @$(SHELL) $(srcdir)/../mkinstalldirs $(snmplibdir)
  191.      @$(INSTALL) $(srcdir)/snmp_perl.pl $(snmplibdir)/snmp_perl.pl
  192. #
  193. # patch local/Makefile.in to include missing mib2c.*.conf
  194. # https://sourceforge.net/tracker/?group_id=12694&atid=112694&func=detail&aid=627932
  195. #
  196. *** ./local/Makefile.in.orig Wed Jul 17 22:43:12 2002
  197. --- ./local/Makefile.in Thu Oct 24 09:47:00 2002
  198. ***************
  199. *** 19,20 ****
  200. --- 19,21 ----
  201.   DATASRCS=mib2c.conf mib2c.iterate.conf mib2c.create-dataset.conf 
  202. +  mib2c.int_watch.conf mib2c.scalar.conf 
  203.    mib2c.array-user.conf mib2c.column_enums.conf 
  204. #
  205. # fix a bug in mib.c that ignores the mibdirs config directive
  206. # https://sourceforge.net/tracker/?group_id=12694&atid=112694&func=detail&aid=628424
  207. #
  208. *** ./snmplib/mib.c.orig Thu Sep 26 15:10:06 2002
  209. --- ./snmplib/mib.c Fri Oct 25 02:47:55 2002
  210. ***************
  211. *** 2295,2302 ****
  212.           dir = getenv("MIBDIRS");
  213.           if (dir == NULL) {
  214.               DEBUGMSGTL(("get_mib_directory", "no mib directories set by environmentn"));
  215. !             /** Not set use hard coded path */
  216. !            netsnmp_set_mib_directory(DEFAULT_MIBDIRS);
  217.           } else if (*dir == '+') {
  218.               DEBUGMSGTL(("get_mib_directory", "mib directories set by environment (but added)n"));
  219.               netsnmp_set_mib_directory(DEFAULT_MIBDIRS);
  220. --- 2295,2313 ----
  221.           dir = getenv("MIBDIRS");
  222.           if (dir == NULL) {
  223.               DEBUGMSGTL(("get_mib_directory", "no mib directories set by environmentn"));
  224. !             /** Check if the config handler found anything */
  225. !             if (confmibdir == NULL) {
  226. !                 DEBUGMSGTL(("get_mib_directory", "no mib directories set by confign"));
  227. !                 /** Not set use hard coded path */
  228. !                 netsnmp_set_mib_directory(DEFAULT_MIBDIRS);
  229. !             } else if (*confmibdir == '+') {
  230. !                 DEBUGMSGTL(("get_mib_directory", "mib directories set by config (but added)n"));
  231. !                 netsnmp_set_mib_directory(DEFAULT_MIBDIRS);
  232. !                 netsnmp_set_mib_directory(confmibdir);
  233. !             } else {
  234. !                 DEBUGMSGTL(("get_mib_directory", "mib directories set by confign"));
  235. !                 netsnmp_set_mib_directory(confmibdir);
  236. !             }
  237.           } else if (*dir == '+') {
  238.               DEBUGMSGTL(("get_mib_directory", "mib directories set by environment (but added)n"));
  239.               netsnmp_set_mib_directory(DEFAULT_MIBDIRS);
  240. #
  241. # patch sedscript.in and man/snmpcmd.1.def
  242. # environment var name was replaced by path in the manpages
  243. # https://sourceforge.net/tracker/?func=detail&atid=112694&aid=635022&group_id=12694
  244. *** ./sedscript.in.orig Sat Oct  5 21:42:14 2002
  245. --- ./sedscript.in      Thu Nov  7 15:52:04 2002
  246. ***************
  247. *** 4,5 ****
  248. --- 4,6 ----
  249.   s#PREMOVEMEREFIX#PREFIX#g
  250. + s#PREMOVEME@REFIX#PREMOVEMEREFIX#g
  251.   s#DREMOVEMEATADIR#DATADIR#g
  252. *** ./man/snmpcmd.1.def.orig    Wed Jun  5 11:43:26 2002
  253. --- ./man/snmpcmd.1.def Thu Nov  7 15:50:50 2002
  254. ***************
  255. *** 492,494 ****
  256.   lookup in a single "well known" place, built into the SNMP library (or
  257. ! specified by the PREFIX environment variable).  The standard place
  258.   is: .iso.org.dod.internet.mgmt.mib-2.  The identifier may alternatively be
  259. --- 492,494 ----
  260.   lookup in a single "well known" place, built into the SNMP library (or
  261. ! specified by the P@REFIX environment variable).  The standard place
  262.   is: .iso.org.dod.internet.mgmt.mib-2.  The identifier may alternatively be
  263. ***************
  264. *** 513,515 ****
  265.   .SH "ENVIRONMENT VARIABLES"
  266. ! .IP PREFIX
  267.   The standard prefix for object identifiers (if using UCD-style output).
  268. --- 513,515 ----
  269.   .SH "ENVIRONMENT VARIABLES"
  270. ! .IP P@REFIX
  271.   The standard prefix for object identifiers (if using UCD-style output).
  272. #
  273. # snmpinform symbolic link should be relative instead of absolute
  274. # https://sourceforge.net/tracker/?group_id=12694&atid=112694&func=detail&aid=652587
  275. #
  276. *** ./apps/Makefile.in.orig Fri May 24 14:44:01 2002
  277. --- ./apps/Makefile.in Thu Dec 12 10:03:01 2002
  278. ***************
  279. *** 114,116 ****
  280.   snmpinforminstall:
  281. !  rm -f $(bindir)/snmpinform$(EXEEXT)
  282. !  $(LN_S) $(bindir)/snmptrap$(EXEEXT) $(bindir)/snmpinform$(EXEEXT)
  283. --- 114,115 ----
  284.   snmpinforminstall:
  285. !  ( cd $(bindir); rm -f snmpinform$(EXEEXT); $(LN_S) snmptrap$(EXEEXT) snmpinform$(EXEEXT) )
  286. #
  287. # patches to autoconf/automake files below are disabled because
  288. # autoconf 2.5x does not like net-snmp (or vice versa)
  289. #
  290. # patch configure.in to mention mibII/mta_sendmail in --help
  291. # https://sourceforge.net/tracker/?func=detail&atid=112694&aid=617508&group_id=12694
  292. #
  293. #*** configure.in.orig Mon Sep  9 13:09:07 2002
  294. #--- configure.in Thu Oct 24 12:05:06 2002
  295. #***************
  296. #*** 338,339 ****
  297. #--- 338,340 ----
  298. #      tunnel                 Linux TUNNEL-MIB support (ifTable extension)
  299. #+     mibII/mta_sendmail     MTA-MIB implementation for sendmail
  300. #
  301. # net-snmp-config not configclean
  302. # https://sourceforge.net/tracker/?func=detail&aid=654570&group_id=12694&atid=112694
  303. #
  304. #*** Makefile.in.orig Wed Sep 18 04:59:18 2002
  305. #--- Makefile.in Mon Dec 16 12:22:08 2002
  306. #***************
  307. #*** 150,152 ****
  308. #   rm -f config.cache config.status config.log 
  309. #!  libtool include/net-snmp/net-snmp-config.h
  310. #   rm -f mibs/.index
  311. #--- 150,153 ----
  312. #   rm -f config.cache config.status config.log 
  313. #!  libtool include/net-snmp/net-snmp-config.h 
  314. #!  net-snmp-config
  315. #   rm -f mibs/.index
  316. ___EOF___
  317. ___snmpd-init.d___
  318. #! /bin/sh
  319. #
  320. # start/stop the NET-SNMP master agent (snmpd)
  321. #
  322. # Location:      /etc/init.d/snmpd
  323. #                /etc/rc3.d/S??snmpd
  324. #
  325. name="NET-SNMP agent"
  326. daemon=@prefix@/sbin/snmpd
  327. case "$1" in
  328. start)
  329.         [ ! -x $daemon ] && echo "ERROR: cannot start $name ($daemon)" && exit 1
  330.         echo "Starting $name ... c"
  331.         pid=`pgrep -fx $daemon`
  332.         [ ! -z "$pid" ] && echo "already running with pid $pid." && exit 0
  333.         $daemon && echo "done."
  334.         ;;
  335. stop)
  336.         echo "Stopping $name ... c"
  337.         pkill -fx $daemon && echo "done." || echo "not running."
  338.         ;;
  339. status)
  340.         echo "$name is c"
  341.         pid=`pgrep -fx $daemon`
  342.         [ -z "$pid" ] && echo "not running" || echo "running with pid $pid"
  343.         ;;
  344. restart)
  345.         $0 stop && $0 start
  346.         ;;
  347. reload)
  348.         echo "Re-initializing $name ...c"
  349.         pkill -HUP -fx $daemon && echo "done." || echo "not running."
  350.         ;;
  351. *)
  352.         echo "Usage: $0 { start | stop | status | restart | reload }"
  353.         ;;
  354. esac
  355. exit 0
  356. ___EOF___