|
Building and Installing ApcupsdThe installation can be made several different ways depending on what system you are running. The basic procedure involves getting a source distribution, running the configuration, rebuilding, and installing. For RedHat systems, apcupsd is available in binary RPM format as well as source RPM format. Please see RedHat RPM Installation below for more details of the RPM installation. For Microsoft Windows systems, there are two forms of binary install (tar file, and setup.exe). Please see Win32 Installation below for more details of the Windows install. The basic installation from a tar source file is rather simple:
If all goes well, the ./configure will correctly determine which operating system you are running and configure the source code appropriately. configure currently recognizes the systems listed below in the Operating System Specifics section of this chapter and adapts the configuration appropriately. Check that the configuration report printed at the end of the ./configure process corresponds to your choice of directories, options, and that it has correctly detected your operating system. If not, redo the ./configure with the appropriate options until your configuration is correct. Please note that a number of the ./configure options preset apcupsd.conf directive values in an attempt to automatically adapt apcupsd as best possible to your system. You can change the values in apcupsd.conf at a later time without redoing the configuration process by simply editing the apcupsd.conf file. For systems other than those mentioned above, you may need to do some tweaking.In general, you will probably want to supply a more complicated configure statement to ensure that the modules you want are built and that everything is placed into the correct directories. On RedHat, I use the following: CFLAGS="-g -Wall" LDFLAGS="-g -Wall" ./configure \ --prefix=/usr \ --sbindir=/sbin \ --with-cgi-bin=/home/www/sibbald/new/cgi-bin \ --enable-cgi \ --with-css-dir=/home/www/sibbald/new/docs/css \ --with-log-dir=/etc/apcupsd \ --enable-pthreads \ --enable-powerflute Default OptionsBy default, make install will install the executable files in /sbin, the manuals in /usr/man, and the configuration and script files in /etc/apcupsd. In addition, if your system is recognized, certain files such as the startup script and the system halt script will be placed in appropriate system directories (usually subdirectories of /etc/rc.d). Checking the InstallationThere are a number of things that you can do to check if the installation (make install) went well. The fist is to check where the system has installed apcupsd using which and whereis. On my RedHat 6.1 system, I get the following (lines preceded with a $ indicate what I typed):$ which apcupsd $ whereis apcupsd Final Installation CheckAs a final check that the make install went well, you should check your halt script (in /etc/rc.d on SuSE systems, and in /etc/rc.d/init.d on RedHat systems) to see that the appropriate lines have been inserted in the correct place. Modification of the halt script is important so that at the end of the shutdown procedure, apcupsd will be called again to command the UPS to turn off the power. This should only be done in a power failure situation as indicated by the presence of the /etc/powerfail file, and is necessary if you want your machine to automatically be restarted when the power returns. On a RedHat system, the lines containing the # ***apcupsd*** should be inserted just before the final halt command:# Remount read only anything that's left mounted. #echo "Remounting remaining filesystems (if any) readonly" mount | awk '/ext2/ { print $3 }' | while read line; do mount -n -o ro,remount $line done # See if this is a powerfail situation. # ***apcupsd*** if [ -f /etc/apcupsd/powerfail ]; then # ***apcupsd*** echo # ***apcupsd*** echo "APCUPSD will now power off the UPS" # ***apcupsd*** echo # ***apcupsd*** /etc/apcupsd/apccontrol killpower # ***apcupsd*** echo # ***apcupsd*** echo "Please ensure that the UPS has powered off before rebooting" # ***apcupsd*** echo "Otherwise, the UPS may cut the power during the reboot!!!" # ***apcupsd*** echo # ***apcupsd*** fi # ***apcupsd*** # Now halt or reboot. echo "$message" if [ -f /fastboot ]; then echo "On the next boot fsck will be skipped." elif [ -f /forcefsck ]; then echo "On the next boot fsck will be forced." fi The purpose of modifying the system halt files is so that apcupsd will be recalled after the system is in a stable state. At that point, apcupsd will instruct the UPS to shut off the power. This is necessary if you wish your system to automatically reboot when the mains power is restored. If you prefer to manually reboot your system, you can skip this final system dependent installation step by specifying the --disable-install-distdir option on the ./configure command (see below for more details). The above pertains to RedHat systems only. There are significant differences in the procedures on each system, as well as the location of the halt script. Also, the information that is inserted in your halt script varies from system to system. Other systems such as Solaris require you the make the changes manually, which has the advantage that you won't have any unpleasant surprises in your halt script should things go wrong. Please consult the specific system dependent README files for more details. Please note that if you install from RPMs for a slave machine, you will need to remove the changes that the RPM install script made (similar to what is noted above) to the halt script. This is because on a slave machine there is no connection to the UPS, so there is no need to attempt to power off the UPS. That will be done by the master. Configure OptionsAll the available configure options can be printed by entering: ./configure --help When specifying options for ./configure, if in doubt, don't put anything, since normally the configuration process will determine the proper settings for your system. The advantage of these options is that it permits you to customize your version of apcupsd. If you save the ./configure command that you use to create apcupsd, you can quickly reset the same customization in the next version of apcupsd by simply re-using the same ./configure command. If you are setting up a master/slave configuration, you will be required to make some modifications to the apcupsd.conf files after the configuration process. For more details on a master/slave setup (two computers powered by the same UPS), please see the Configuration Examples Chapter of this document. In addition, you will find some schematic diagrams of the possible configurations in the Configuration Chapter. The following command line options are available for configure to customize your installation.
Recommended Options for most SystemsFor most systems, we recommend the following options: ./configure --prefix=/usr --sbindir=/sbin and you can optionally build and install the CGI programs as follows: ./configure --prefix=/usr --sbindir=/sbin --enable-cgi --with-cgi-bin=/home/httpd/cgi-bin Compilers and OptionsSome systems require unusual options for compilation or linking that the ./configure script does not know about. You can specify initial values for variables by setting them in the environment. Using a Bourne-compatible shell, you can do that on the command line like this:CFLAGS="-O2 -Wall" LDFLAGS= ./configure Or on systems that have the env program, you can do it like this:env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure Or for example on the Sun Solaris system, you can use: setenv CFLAGS -xO2 setenv LDFLAGS -O ./configure Operating System SpecificsWith the exception of Linux SuSe and Linux RedHat systems used by the developers, we rely on users to help create installation scripts and instructions as well as to test that apcupsd runs correctly on their system. As you can imagine, most of these people are system adminstrators rather than developers so they are very busy and don't always have time to test the latest releases. With that in mind, we believe that you will find that a lot of very valuable work has been already done to make your installation much easier (and probably totally automatic).Below, you will find a list of Operating Systems for which we have received installation files: AlphaCaldera Debian FreeBSD HPUX NetBSD OpenBSD RedHat RedHat RPM Installation Slackware SuSE Solaris Unknown Windows AlphaThe Alpha V4.0 version of apcupsd builds without compiler errors with gcc version 2.95.2. It is unlikely that the native Alpha compiler will work because of varargs differences. Unless you are a system guru, we recommend that you connect your UPS to the second serial port /dev/tty01 to avoid conflicts with the console device.DEVICE /dev/tty01In addition, you should ensure serial port lock file in apcupsd.conf is defined as: LOCKFILE /var/spool/locks Unlike the Linux systems, the system halt routine is located in /sbin/rc0, so after the make install, please check that this file has been correctly updated. The start/stop script can be found in: /sbin/init.d/apcupsd CalderaThis port appears to be complete, but we have had no feedback from users.DebianThis port is complete and is operation by several users. Since Debian build and install procedures are somewhat particular, we have put the extra Debian information into the following two subdirectories: <src>/distributions/debian/examples/ and <src>/distributions/debian/packageinfoYou can also find the offical Debian packages on the Debian site. FreeBSDThis port is complete and is being used by several users. As of version 3.8.3, we do not recommend that you compile apcupsd with pthreads enabled. This is because the current FreeBSD implementation of pthreads runs as a single process, and thus is less efficient (consumes more CPU time) than the forking version of apcupsd. We hope to rectify this in a future version by using the FreeBSD LinuxThreads implementation of pthreads.HPUXWe have no reports of testing this yet on version 3.8.4, but worked fine on 3.8.1
NetBSDSubmitted during development of 3.8.2, this should be a complete distribution.Please read the comments on the pthreads implementation in the FreeBSD section above as they may apply equally to OpenBSD. OpenBSDEnsure that you read the distributions/openbsd/README file before running apcupsd. There are some critical differences in how the OpenBSD implemenation operates when the UPS batteries are exhausted. Failure to take this into account may result in the system not being fully halted when power is lost.Please read the comments on the pthreads implementation in the FreeBSD section above as they may apply equally to OpenBSD.
RedHat SystemsRedHat systems are fully supported, and by following the standard installation instructions given above, you should experience few or no problems.RedHat RPM InstallationFor RedHat systems 6.0, 6.1, and 6.2, and 7.0, there are binary and source RPMs available. Follow standard procedures for installing them. Please note, that the neither the 6.x nor the 7.0 RPMs can be installed on a RedHat 7.1 system. These binary RPMs can be installed with:rpm -Uhv <release> where <release> is the release to be installed, and is typically something like apcupsd-3.8.0.i386.rpm (or perhaps apcupsd-3.8.0-pre6.i386.rpm for a pre-release).IMPORTANTIf you are doing a binary RPM upgrade, please remove the previous version of apcupsd because for some unknown reason, the rpm does not always update the halt script. To do the upgrade, use the following two commands: rpm -e apcupsd
After installation of the binary RPM, please verify carefully that /etc/rc.d/init.d/halt was properly updated and contains new script lines flagged with ***APCUPSD***. Since there is no standard location for cgi-bin, the rpm will place the binary CGI programs in the directory /etc/apcupsd/cgi. To actually use them, you must copy or move them to your actual cgi-bin directory, which on many systems is located in /home/httpd/cgi-bin. SlackwareSlackware systems are fully supported, and by following the standard installation instructions given above, you should experience few or no problems.SuSESuSE systems are fully supported, and by following the standard installation instructions given above, you should experience few or no problems.Sun SolarisPlease read this before attempting to compile or install the beta software. It contains important information that will make your efforts easier. If you find bugs, or run into problems that seem to be related to the version of Solaris that you run, please feel free to contact me by email, or through the development mailing list. I'll attempt to help with problems getting the beta running, although I can't promise a quick response. As always, remember testing UPSes can be hazardous to you system, and, APCUPSD MAY CONTAIN BUGS THAT CAN DAMAGE YOUR SYSTEM AND DATA FILES! You must accept all responsibility for running this software. An unexpected power-off of a running system can be a disaster. As always, make backups of any critical information before you install this software. Remember, we told you. we'll listen sympathetically if you lose data, but there will be nothing we can do to help you.
Sincerely,
Please read the general installation instructions given above before continuing on with these Solaris-specific instructions. Then come back and read this section before attempting to build the package. For building the system, we suggest that you run the configure and make processes as your normal UNIX user ID. The make install must be run as root. But if your normal ID has an environment setup for using the c compiler, it's simpler to do that than setup root to have the correct environment. Normally, we support the GCC compiler, but we have also attempted to support the Solaris workshop compilers and EGCS compilers. Please be aware that if you do not use GCC, you may experience a few problems. Whichever compiler you do have, please insure that you can execute the compiler from the command line before running configure. If you do not have an environment setup to run the compiler first, configure will fail. Before running ./configure, please be sure that you do not have /usr/ucb on your path. This may cause the ./configure to chose the wrong shutdown program. If ./configure detects that /usr/usb is on your path, it will print a warning message. Please follow the advice to avoid shutdown problems. Your normal UNIX user ID must own the source tree directories, and you must have the normal development tools in your path. This includes make, the compiler, the M4 preprocessor, the linker, and ar or ranlib. If the user you are logged in as can compile and link a c program from a source file, then you have all the required tools available.You will want to install the executables in a directory that remains mounted during the shutdown. Solaris will unmount almost everything except the root directories. Since the ability to power the UPS off requires access to the executable programs, they need to be in a directory that will never be unmounted. And since they should also be in a directory that normal users cannot get into, /sbin is the default. However, please be aware that if you want to follow Sun's filesystem conventions you would use the following: ./configure \ --prefix=/opt/apcupsd \ --sbindir=/etc/opt/apcupsd/sbin \ --sysconfdir=/etc/opt/apcupsd \ --with-cgi-bin=/opt/apcupsd/cgi-binThe way to setup the /sbin directory as the executables directory is to pass configure the --sbindir=/sbin option. No other arguments should be required, and your setup and platform should be detected automatically by configure. Once you have run configure, you will need to do a make. Once the make has completed with no errors, you must su to root to complete the install. After the su, you may not have a path to the make program anymore. In that case, you should do the make install step as: /usr/ccs/bin/make install Once the install completes, you must edit the /sbin/rc0 script as detailed below, then exit from the su'ed shell.In order to support unattended operation and shutdown during a power failure, it's important that the UPS remove power after the shutdown completes. This allows the unattended UPS to reboot the system when power returns by repowering the system. Of course, you need autoboot enabled for your system to do this, but all Solaris systems have this by default. If you have disabled this on your system, please re-enable it. To get the UPS to remove power from the system at the correct time during shutdown, i.e., after the disks have done their final sync, we need to modify a system script. This script is /sbin/rc0. We do not have access to every version of Solaris, but we believe this file will be almost identical on every version. Please let us know if this is not true. At the very end of the /sbin/rc0 script, you should find lines just like the following: # unmount file systems. /usr, /var and /var/adm are not unmounted by umountall # because they are mounted by rcS (for single user mode) rather than # mountall. # If this is changed, mountall, umountall and rcS should also change. /sbin/umountall /sbin/umount /var/adm >/dev/null 2>&1 /sbin/umount /var >/dev/null 2>&1 /sbin/umount /usr >/dev/null 2>&1 echo 'The system is down.'We need to insert the following lines just before the last 'echo':
#see if this is a powerfail situation if [ -f /etc/apcupsd/powerfail ]; then echo echo "APCUPSD will power off the UPS" echo /etc/apcupsd/apccontrol killpower echo echo "Please ensure that the UPS has powered off before rebooting" echo "Otherwise, the UPS may cut the power during the reboot!!!" echo fiWe have included these lines in a file called rc0.solaris in the distributions/sun subdirectory of the source tree. You can cut and paste them into the /sbin/rc0 file at the correct place, or yank and put them using vi or any other editor. Note that you must be root to edit this file. You must be absolutely sure you have them in the right place. If your /sbin/rc0 file does not look like the lines shown above, do not modify the file. Instead, email a copy of the file to me, and I will attempt to figure out what you should do. If you mess up this file, the system will not shut down cleanly, and you could lose data. Don't take the chance. This feature has only been tested with APC SmartUPS models. If you do not have a SmartUPS, you will be one of the first testers to try this feature. Please send me email to let me know if it works with your UPS model, what model you have, and if possible, the event logs located in /etc/apcupsd. We'd be very interested in your results, and would be glad to work with you to get this feature working correctly with all the APC models. A detailed description of the screen output during the shutdown would be very helpful if you see problems. You will then need to make the normal changes to the /etc/apcupsd/apcupsd.conf file. This file contains the configuration settings for the package. It is important that you set the values to match your UPS model and cable type, and the serial port that you have attached the UPS to. I have used both /dev/ttya and /dev/ttyb with no problems. You should be sure that logins are disabled on the port you are going to use, otherwise you will not be able to communicate with the UPS. If you are not sure that logins are disabled for the port, run the 'admintool' program as root, and disable the port. The 'admintool' program is a GUI administration program, and required that you are running CDE, OpenWindows, or another XWindows program such as KDE. Solaris EEPROM ChangesSolaris probes the serial ports during boot, and during this process, it toggles some handshaking lines used by the UPS. As a result, particularly for simple signalling "dumb" UPSes it seems to kick it into a mode that makes the UPS think it's either in a calibration run, or some self-test mode. Since at this point we are really not communicating with the UPS, it's pretty hard to tell what happened. But it's easy to prevent this, and you should. Disconnect the UPS, and boot the system. When you get to a login prompt, log in as root. Type the following command:eeprom com1-noprobe=true or eeprom com2-noprobe=truedepending on which com port your UPS is attached to. Then sync and shutdown the system normally, reattach the UPS, and reboot. This should solve the problem. However, we have some reports that recent versions of Solaris (7 & 8) appear to have removed this eeprom option and there seems to be no way to suppress the serial port probing during boot. At this point, you should have a complete installation. The daemon will load automatically at the next boot. Watch for any error messages during boot, and check the event logs in /etc/apcupsd. If everything looks OK, you can try testing the package by removing power from the UPS. NOTE! if you have a simple signaling UPS, please run the first power tests with your computer plugged into the wall rather than into the UPS. This is because simple signaling UPSes have a tendency to power off if your configuration or cable are not correct. As a user, your input is very helpful in solving problems with the package, and providing suggestions and future directions for the development of the package. We are striving to provide a useful package that works across all platforms, and welcome your feedback. Best regards, and thanks for your interest and help, The Apcupsd Development Team. Unknown Operating SystemDuring the ./configure, if apcupsd does not find one of the systems for which it has specific installation programs, it will set the Operating System to unknown and will use the incomplete installation scripts that are in <src>/distributions/unknown/. You will be on your own, or you can ask the developers list (apcupsd-devel@apcupsd.org) for installation instructions. This directory also contains a hint file for Linux From Scratch, which could be helpful for other systems as well.Windows Systems with CYGWIN InstalledIf you have a binary release of the Win32 apcupsd, please see the instructions in the Win32 section of this manual.If you wish to build from the source, and if you have CYGWIN version 1.3.2 and GCC 2.95.3-5 installed, it is possible to build the Win32 version of apcupsd. Note, apcupsd version 3.8.0 as distributed was built with CYGWIN version 1.1.2 but works fine when built and run with CYGWIN 1.1.5. Version 3.8.2 was built with CYGWIN version 1.3.1-1, and versions 3.8.3 and 3.8.4 of apcupsd are built with CYGWIN version 1.3.2. Please don't try any other versions of CYGWIN as there were known problems. To date, the Win32 version has only been build on a Win98 SR2 system with the above CYGWIN environment and all the available CYGWIN tools loaded. In addition, the builds were done running under the bash shell. As time permits, we will experiment with other environments, and if any of you do build it from source, please let us know. The current CYGWIN environment was loaded using the CYGWIN setup.exe program, downloading ALL the latest binaries and installing them. We recommend that you run the ./configure command with the following options: ./configure \ --prefix=/apcupsd \ --sbindir=/apcupsd/bin \ --sysconfdir=/apcupsd/etc/apcupsd \ --with-pid-dir=/apcupsd/etc/apcupsd \ --mandir=/apcupsd \ --with-cgi-bin=/apcupsd/etc/apcupsd/cgi \ --enable-pthreadsAfter which, you can do a: makeAnd to install apcupsd, do: make install During linking of popup.exe and apcupsd.exe, the following warning message is printed: /USR/BIN/ld: warning: cannot find entry symbol _WinMainCRTStartup; defaulting to 00401000This warning causes no harm. If there is some CYGWIN guru out there who knows how to eliminate this error, please contact me at: kern@sibbald.com. Finally, you should follow the installation instructions in the Win32 Installation section of this document, skipping the part that describes unZipping the binary release. |