IBM Tivoli on Debian

July 2007


IBM's Tivoli is a storage solution that the RuG uses for backup/restore. It can be downloaded here. Documentation for the client is supposed to be here, but that takes you to a generic entry point where you have to search for the correct route to the actual docs first. I find this a good starting point.

Procedure 68.  Log of Tivoli installation

  1. Preparing the system

    1. The java we're going to use needs libstdc++5: apt-get install libstdc++5

    2. The java-based dsmj needs the Korn shell, so we install that: apt-get install ksh

    3. Installing Java v1.4

      The dsmj executable supports only java 1.4 and no higher. SUN doesn't offer version 1.4 for amd64. So we try Blackdown java:

      1. Download: ftp://ftp.easynet.be/blackdown/JDK-1.4.2/amd64/rc1/j2re-1.4.2-rc1-linux-amd64.bin

      2. As an ordinary user, create the package: fakeroot make-jpkg /tmp/j2re-1.4.2-rc1-linux-amd64.bin

      3. Install the package: dpkg -i ~jurjen/blackdown-j2re1.4_1.4.2+rc1_amd64.deb

  2. Getting the software

    1. We fetch the software [32]

      • wget ftp://service.boulder.ibm.com/storage/tivoli-storage-management/maintenance/client/v5r4/Linux/Linux86/v541/5.4.0.0-TIV-TSMBAC-LinuxX86.tar && \

      • wget ftp://service.boulder.ibm.com/storage/tivoli-storage-management/maintenance/client/v5r4/Linux/Linux86/v541/5.4.1.0-TIV-TSMBAC-LinuxX86.tar

    2. Unpack the tarfiles with:


            
      for TAR in `ls -1 *.tar` ; do
      DIR=`basename $TAR .tar`
      mkdir $DIR &&
      pushd $DIR &&
      tar xf ../$TAR &&
      popd 
      done
            

          

      alien Fails miserably, so we unpack all the rpms with:


            
      for DIR in `ls -d1 *LinuxX86` ; do
      UNPACK=${DIR}/unpack \
      if mkdir ${UNPACK} && pushd ${UNPACK} ; then 
      for RPM in `ls -1 ../*.rpm` ; do 
      rpm2cpio ${RPM}|cpio -idmv --no-absolute-filenames 
      done 
      popd 
      fi 
      done 
            

          

      [33]

    3. Copy the ./opt files into place:


            
      cp -ru 5.4.0.0-TIV-TSMBAC-LinuxX86/unpack/opt/tivoli /opt/
      cp -ru 5.4.1.0-TIV-TSMBAC-LinuxX86/unpack/opt/tivoli /opt/
            

          

    4. Not all the programs in {dsmc, dsmj, dsmagent} react identically to setting the DSM_DIR environment variable. So in order to avoid using that variable, we run all these programs from the directory they reside in. They then still search for message files in locations where they are not, so we fool them with a symlinks:


            
      pushd /opt/tivoli/tsm/client/ba/bin/ && \
      ln ../../lang/en_US/ ./ 
            

          

    5. We also want our config in /etc/, so we create /etc/tivoli and link into it:


            
      pushd /opt/tivoli/tsm/client/ba/bin/ && \
      ln -s /etc/tivoli/dsm.sys ./ && \
      ln -s /etc/tivoli/dsm.opt ./
            

          

    6. Link a xerces library sought by dsmagent into place:


            
      pushd /opt/tivoli/tsm/client/api/bin && \
      ln -s libxerces-c1_6_0.so libtsm541xerces-c1_6_0.so
            

          

  3. Configuring the software

    1. We can now run the dsmc binary with the following script:


      [Warning]Warning

      Heiko reports that setting

      export LANG=en_US.UTF-8
      export LC_ALL=en_US.UTF-8
      export LC_CTYPE=en_US.UTF-8
      		

      works, and the wrapeer script doesn't.

    2. We edit /etc/tivoli.dsm.opt to contain:


    3. And we put in /etc/tivoli/dsm.sys:


    In the above dsm.sys, we temporarily set RUNASSERVICE to NO. Then we run the dsmc program once and issue the command query schedule so it starts a session with the server and provides for an automatically updated password in /etc/adsm/TSM.PWD. And we set it back to YES.

  4. Running the software

    We can now start dsmj by slightly modifying It will still give us errors after some time, but it runs long enough to exclude some ftp mirrors from being backed up.

    In order to be backed up nightly, the server needs to have the scheduler running, which is started by dsmc sched. We create an initrc from /etc/init.d.skeleton and make it start and stop saying update-rc.d tivoli defaults.



[32] Do fetch them both. Some libs are only in the former

[33] This puts files in the unpack/opt and unpack/usrdirectories, of which the latter contain just symlinks.