1台のサーバに複数のapcupsdをインストールする
これを行ったときの環境を以下のようにしています。
■環境
■2つめのApcupsdのディレクトリ構成
・/usr/local/apcupsd/sub : インストール先
・/usr/local/apcupsd/sub/run : PIDファイルなどの保存先
・/usr/local/apcupsd/sub/lock : ロックファイルの保存先
・/usr/local/apcupsd/sub/etc : 設定ファイルの保存先
・/usr/local/apcupsd/sub/log : ログファイルの保存先
※"/usr/local/apcupsd"ディレクトリはもともとありませんので予め作成しておきます。
■環境
apcupsd-3.14.4
FreeBSD-6.2
FreeBSD-6.2
■2つめのApcupsdのディレクトリ構成
・/usr/local/apcupsd/sub : インストール先
・/usr/local/apcupsd/sub/run : PIDファイルなどの保存先
・/usr/local/apcupsd/sub/lock : ロックファイルの保存先
・/usr/local/apcupsd/sub/etc : 設定ファイルの保存先
・/usr/local/apcupsd/sub/log : ログファイルの保存先
※"/usr/local/apcupsd"ディレクトリはもともとありませんので予め作成しておきます。
ソースからインストールするのは色々とオプションが必要になりかなり面倒ですのでここではportsから行います。
まず、そのままmakeするとデフォルト状態のままなのでMakefileの書き換えます。
とりあえず2つめ以降のインストールで重要なのはapcaccessが使用するポート番号を設定することですので"--sbindir"、"--with-nis-port"、"--disable-install-distdir"だけでも良いような気もしますが、削除するときや管理の面から見たら関係するファイルはすべて同じディレクトリ配下に作るほうがファイル名の重複なども避けられて効率が良さそうなのでそれ以外に関するオプションも指定しています。
編集が終わったら次はインストールを行いますが、その前に"/usr/local/etc/rc.d/"の起動ファイルを別名にしておきます。
名前を変更したらインストールを行います。
まず、そのままmakeするとデフォルト状態のままなのでMakefileの書き換えます。
"/usr/ports/sysutils/apcupsd/Makfile"
(色分け:書換、追記、コメント)
1: # New ports collection makefile for: apcupsd 2: # Date created: 1.12.2001 3: # Whom: Lars K・ler <Lars.Koeller@Uni-Bielefeld.DE> 4: # 5: # $FreeBSD: ports/sysutils/apcupsd/Makefile,v 1.58 2008/07/10 20:03:47 itetcu Exp $ 6: # 7: 8: PORTNAME= apcupsd 9: PORTVERSION= 3.14.4 10: CATEGORIES= sysutils 11: MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:S/$/:src_sf/g} \ 12: http://T32.TecNik93.com/FreeBSD/ports/${PORTNAME}/sources/:src_bk \ 13: http://apcupsd.sourceforge.net/manual/:doc_sf \ 14: http://T32.TecNik93.com/FreeBSD/ports/${PORTNAME}/sources/:doc_bk 15: MASTER_SITE_SUBDIR= ${PORTNAME}/:src_sf 16: DISTFILES= ${DISTNAME}${EXTRACT_SUFX}:src_sf,src_bk \ 17: ${PORTNAME}.pdf:doc_sf,doc_bk 18: EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX} 19: #IGNOREFILES= ${PORTNAME}.pdf 20: 21: MAINTAINER= itetcu@FreeBSD.org 22: COMMENT= Set of programs for controlling APC UPS 23: 24: USE_RC_SUBR= apcupsd 25: SUB_FILES= pkg-message 26: 27: GNU_CONFIGURE= yes 28: USE_GMAKE= yes 29: #CONFIGURE_ARGS=--sbindir=${PREFIX}/sbin \ 30: # --with-nologin=/var/run \ 31: # --disable-install-distdir \ 32: # --sysconfdir=${ETCDIR} \ 33: # --with-serial-dev=/dev/usv コメントアウトにする : CONFIGURE_ARGS= --with-serial-dev=/dev/usv \ : --prefix=/usr/local/apcupsd/sub \ : --sbindir=/usr/local/apcupsd/sub/sbin \ : --with-nis-port=7001 \ : --with-nologin=/usr/local/apcupsd/sub/run \ : --with-log-dir=/usr/local/apcupsd/sub/log \ : --with-pid-dir=/usr/local/apcupsd/sub/run \ : --with-lock-dir=/usr/local/apcupsd/sub/lock \ : --with-pwrfail-dir=/usr/local/apcupsd/sub/run \ : --sysconfdir=/usr/local/apcupsd/sub/etc \ : --disable-install-distdir 34: 35: CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include -L${LOCALBASE}/lib" \ 36: CFLAGS="-I${LOCALBASE}/include -L${LOCALBASE}/lib" \ 37: LDFLAGS="-L${LOCALBASE}/lib" 38: 39: MAN8= apcupsd.8 40:
編集が終わったら次はインストールを行いますが、その前に"/usr/local/etc/rc.d/"の起動ファイルを別名にしておきます。
(色分け:入力値、コマンドライン、コメント)
# cd /usr/local/etc/rc.d # mv apcupsd.sh apcupsd_master.sh ※もしかしたら".sh"の拡張子が無いかもしれません。
(色分け:入力値、コマンドライン、コメント)
# cd /usr/ports/sysutils/apcupsd # make clean ; make ===> Cleaning for apcupsd-3.14.4 ===> Vulnerability check disabled, database not found ===> Found saved configuration for apcupsd-3.14.4 ===> Extracting for apcupsd-3.14.4 => MD5 Checksum OK for apcupsd-3.14.4.tar.gz. => SHA256 Checksum OK for apcupsd-3.14.4.tar.gz. => MD5 Checksum OK for apcupsd.pdf. => SHA256 Checksum OK for apcupsd.pdf. ===> Patching for apcupsd-3.14.4 ===> Applying FreeBSD patches for apcupsd-3.14.4 ===> apcupsd-3.14.4 depends on executable: gmake - found ===> apcupsd-3.14.4 depends on shared library: netsnmp.16 - found ===> Configuring for apcupsd-3.14.4 configure: WARNING: you should use --build, --host, --target ...(中略)...Configuration on Wed Aug 6 23:00:13 JST 2008: Host: i386-portbld-freebsd6.2 -- freebsd 6.2-RELEASE-p11 Apcupsd version: 3.14.4 (18 May 2008) Source code location: . Install binaries: /usr/local/apcupsd/sub/sbin Install config files: /usr/local/apcupsd/sub/etc Install man files: /usr/local/man Nologin file in: /usr/local/apcupsd/sub/run PID directory: /usr/local/apcupsd/sub/run LOG dir (events, status) /usr/local/apcupsd/sub/log LOCK dir (for serial port) /usr/local/apcupsd/sub/lock Power Fail dir /usr/local/apcupsd/sub/run Compiler: c++ 3.4.6 Compiler flags: -I/usr/local/include -L/usr/local/lib -Wall Linker: cc Linker flags: -L/usr/local/lib -L/usr/local/lib -pthread Host and version: freebsd 6.2-RELEASE-p11 Shutdown Program: /sbin/shutdown Port/Device: /dev/usv Network Info Port (CGI): 7001 UPSTYPE apcsmart UPSCABLE smart drivers (no-* are disabled): apcsmart dumb net bsd-usb net-snmp pcnet no-test enable-nis: yes with-nisip: 0.0.0.0 enable-cgi: no with-cgi-bin: /etc/apcupsd with-libwrap: yes enable-powerflute: no enable-pthreads: yes enable-dist-install: no enable-gapcmon: no Configuration complete: Run 'gmake' to build apcuspd.
↑ここで表示された内容があっているか確認しておきます。 もしパスの指定が違っていたらMakefileを編集して再度makeします。
makeが正常に終わればインストール。 # make install
まず、起動ファイルのファイル名をメインのApcupsdと区別できるように書き換えておきます(必要な場合のみ)
それとApcupsdが作成するファイルの保存先となるディレクトリも作成します(作成されていない場合のみ)
次に起動ファイルの中を書き換えます。
あとは起動するために"/etc/rc.conf"に以下の1行を追加します。
それが終われば、"/usr/local/apcupsd/sub/etc/apcupsd.conf"の設定を行い、apcupsdが正常に起動できるか確認します。
(色分け:入力値、コマンドライン、コメント)
# cd /usr/local/etc/rc.d # mv apcupsd.sh apcupsd_sup.sh ※もしかしたら".sh"の拡張子が無いかもしれません。
(色分け:入力値、コマンドライン、コメント)
# mkdir /usr/local/apcupsd/sub/run # mkdir /usr/local/apcupsd/sub/lock # mkdir /usr/local/apcupsd/sub/log
"/usr/local/etc/rc.d/apcupsd_sub.sh"
(色分け:書換、追記、コメント)
1: #!/bin/sh 2: # 3: # $FreeBSD: ports/sysutils/apcupsd/files/apcupsd.in,v 1.3 2007/10/21 10:39:39 itetcu Exp $ 4: # 5: # PROVIDE: apcupsd 6: # REQUIRE: SERVERS 7: # BEFORE: DAEMON 8: # KEYWORD: shutdown 9: # 10: # Add the following line to /etc/rc.conf[.local] to enable apcupsd 11: # 12: # apcupsd_enable (bool): Set to "NO" by default. 13: # Set it to "YES" to enable apcupsd. 14: # apcupsd_args (str): Custom additional arguments to be passed 15: # to apcupsd (default empty). 16: # 17: 18: . /etc/rc.subr 19: 20: name="apcupsd_sub" 21: rcvar=${name}_enable 22: 23: load_rc_config $name 24: 25: : ${apcupsd_factory_enable="NO"} 26: : ${apcupsd_factory_flags="--kill-on-powerfail --config-file=/usr/local/apcupsd/sub/etc/apcupsd.conf"} 27: : ${apcupsd_factory_pidfile="/usr/local/apcupsd/sub/run/apcupsd.pid"} 28: : ${apcupsd_factory_lockfile="/usr/local/apcupsd/sub/lock/apcupsd.lock"} 29: : ${apcupsd_factory_program="/usr/local/apcupsd/sub/sbin/apcupsd"} 30: 31: pidfile="/usr/local/apcupsd/sub/run/apcupsd.pid" 32: required_files="/usr/local/apcupsd/sub/etc/apcupsd.conf" 33: command="/usr/local/apcupsd/sub/sbin/apcupsd" 34: 35: run_rc_command "$1"
"/etc/rc.conf"
(色分け:書換、追記、コメント)
apcupsd_sub_enable="YES"
(色分け:入力値、コマンドライン、コメント)
# /usr/local/etc/rc.d/apcupsd_sub.sh start 起動しているかの確認 # ps ax | grep apcupsd 47949 ?? Ss 0:05.84 /usr/local/apcupsd/factory/sbin/apcupsd --k apcaccessで情報を取得してみる # /usr/local/apcupsd/sub/sbin/apcaccess status APC : 001,049,1155 DATE : Sun Aug 10 17:49:02 JST 2008 HOSTNAME : server RELEASE : 3.14.4 VERSION : 3.14.4 (18 May 2008) freebsd UPSNAME : UPS_IDEN CABLE : Ethernet Link MODEL : SNMP UPS Driver UPSMODE : Stand Alone STARTTIME: Fri Aug 08 21:49:09 JST 2008 STATUS : ONLINE LINEV : 105.0 Volts LOADPCT : 5.0 Percent Load Capacity BCHARGE : 100.0 Percent TIMELEFT : 157.0 Minutes MBATTCHG : 5 Percent MINTIMEL : 3 Minutes MAXTIME : 0 Seconds MAXLINEV : 107.0 Volts MINLINEV : 104.0 Volts OUTPUTV : 106.0 Volts SENSE : Low DWAKE : 000 Seconds DSHUTD : 020 Seconds DLOWBATT : 05 Minutes LOTRANS : 090.0 Volts HITRANS : 110.0 Volts RETPCT : 000.0 Percent ITEMP : 53.0 C Internal ALARMDEL : 5 seconds LINEFREQ : 60.0 Hz LASTXFER : Low line voltage NUMXFERS : 0 TONBATT : 0 seconds CUMONBATT: 0 seconds XOFFBATT : N/A SELFTEST : NG STESTI : never STATFLAG : 0x07000008 Status Flag DIPSW : 0x00 Dip Switch MANDATE : 12/16/98 SERIALNO : WS9850073031 BATTDATE : 07/01/07 NOMOUTV : 100 Volts NOMPOWER : 0 Watts EXTBATTS : 0 BADBATTS : 0 FIRMWARE : 72.12S.A APCMODEL : SMART-UPS 1400 RM END APC : Sun Aug 10 17:49:55 JST 2008
ここでは2つ目のApcupsdを導入するまでの手順を記載しています。
作成日:2008.8.10
更新日:2009.10.29