9e51240157
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@3236 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
226 lines
6.3 KiB
Bash
Executable File
226 lines
6.3 KiB
Bash
Executable File
#!/bin/sh
|
|
# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
|
|
|
|
#-------------------------------------------------------------------------------
|
|
#=head1 otherpkgs
|
|
#=head2 It gets the extra rpms and install/update them.
|
|
# The environment variable OTHERPKGS contains the rpms to be installed/updated.
|
|
# On MN, You need to:
|
|
# 1. put rpms under /install/post/otherpkgs/os/arch directory where 'os' and 'arch'
|
|
# can be found in the nodetype table.
|
|
# 2. put the name of the packages to /opt/xcat/share/xcat/netboot(install)/platform
|
|
# directory. The file name is one of the following:
|
|
# profile.os.arch.otherpkgs.pkglist
|
|
# profile.os.otherpkgs.pkglist
|
|
# profile.arch.otherpkgs.pkglist
|
|
# profile.otherpkgs.pkglist
|
|
# The install/deployment process will pick up the rpms and install them on the nodes.
|
|
# However, if the nodes have already installed and up and running, you can run the following
|
|
# command to have the extra rpms installed:
|
|
# updatenode noderange otherpkgs
|
|
#
|
|
#=cut
|
|
#-------------------------------------------------------------------------------
|
|
|
|
#echo "OTHERPKGS=$OTHERPKGS"
|
|
if [[ -z "$OTHERPKGS" ]]; then
|
|
echo "$0: no extra rpms to install"
|
|
exit 0
|
|
fi
|
|
|
|
#if [[ $OSTYPE = linux* ]]; then
|
|
# #find out the server
|
|
# SIP=`grep -h dhcp-server-identifier /var/lib/dhclient/dhclient-*.leases|tail -n 1|awk '{print $3}'|sed -e 's/;//'`
|
|
# if [ -z "$SIP" ]; then
|
|
# SIP=`grep -h DHCPSID /var/lib/dhcpcd/*.info|awk -F= '{print $2}'|tail -n 1`
|
|
# fi
|
|
#update SIP for SLES11
|
|
#if [ "$OSVER" = "sles11" ]; then
|
|
# SIP=`echo $SIP |awk -F\' '{print $2}'` #trim '
|
|
#fi
|
|
|
|
if [[ -z "$NFSSERVER" ]]; then
|
|
NFSSERVER=$MASTER
|
|
fi
|
|
|
|
if [[ $OTHERPKGS_HASREPO -eq 1 ]]; then
|
|
rpm -q yum
|
|
if [ $? -eq 0 ]; then
|
|
#use yum
|
|
REPOFILE="/tmp/xCAT-otherpkgs.repo"
|
|
echo "[xcat-otherpkgs]" > $REPOFILE
|
|
echo "name=xcat-otherpkgs" >> $REPOFILE
|
|
echo "baseurl=ftp://$NFSSERVER/post/otherpkgs/$OSVER/$ARCH" >> $REPOFILE
|
|
echo "enabled=1" >> $REPOFILE
|
|
echo "gpgcheck=0" >> $REPOFILE
|
|
#clean meta data to make possible for update
|
|
yum -c $REPOFILE clean metadata
|
|
|
|
INSTALLPKGS=""
|
|
UPDATEPKGS=""
|
|
#check if the packges are installed already
|
|
for x in `echo "$OTHERPKGS" | tr "," "\n"`
|
|
do
|
|
rpm -q $x
|
|
if [ $? -eq 0 ]; then
|
|
UPDATEPKGS="$UPDATEPKGS $x"
|
|
else
|
|
INSTALLPKGS="$INSTALLPKGS $x"
|
|
fi
|
|
done
|
|
|
|
#update packages
|
|
if [[ ! -z $UPDATEPKGS ]]; then
|
|
echo "yum -c $REPOFILE -y update $UPDATEPKGS"
|
|
result=`yum -c $REPOFILE -y update $UPDATEPKGS 2>&1`
|
|
if [ $? -ne 0 ]; then
|
|
echo "$result"
|
|
logger "otherpkgs: $result"
|
|
fi
|
|
exit 0
|
|
fi
|
|
|
|
#install packages
|
|
if [[ ! -z $INSTALLPKGS ]]; then
|
|
echo "yum -c $REPOFILE -y install $INSTALLPKGS"
|
|
result=`yum -c $REPOFILE -y install $INSTALLPKGS 2>&1`
|
|
if [ $? -ne 0 ]; then
|
|
echo "$result"
|
|
logger "otherpkgs: $result"
|
|
fi
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
|
|
#try zypper
|
|
result=`rpm -q zypper`
|
|
if [ "$?" = "0" ]; then
|
|
#use zypper
|
|
if [ "$OSVER" = "sles11" ]; then
|
|
zypper ar ftp://$NFSSERVER/post/otherpkgs/$OSVER/$ARCH/ otherpkgs
|
|
else
|
|
zypper sa ftp://$NFSSERVER/post/otherpkgs/$OSVER/$ARCH/
|
|
fi
|
|
|
|
zypper refresh
|
|
|
|
#install
|
|
PKGS=`echo "$OTHERPKGS" | tr "," " "`
|
|
echo "zypper install -y $PKGS"
|
|
result=`zypper install -y $PKGS 2>&1`
|
|
if [ $? -ne 0 ]; then
|
|
logger "otherpkgs: $result"
|
|
fi
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
#if it is not handled by the above code, we will use wget to download the rpms
|
|
mkdir -p /xcatpost/post/otherpkgs/$OSVER/$ARCH;
|
|
rm -f -R /xcatpost/post/otherpkgs/*
|
|
mkdir -p /tmp/postage/
|
|
rm -f -R /tmp/postage/*
|
|
cd /tmp/postage
|
|
|
|
for x in `echo "$OTHERPKGS" | tr "," "\n"`
|
|
do
|
|
wget -l inf -N -r --waitretry=10 --random-wait --retry-connrefused -t 0 -T 60 ftp://$NFSSERVER/post/otherpkgs/$OSVER/$ARCH/$x-* 2> /tmp/wget.log
|
|
done
|
|
|
|
mv $NFSSERVER/post/otherpkgs/* /xcatpost/post/otherpkgs;
|
|
rm -rf $NFSSERVER
|
|
|
|
#try zypper with local dir first
|
|
result=`rpm -q zypper`
|
|
if [ "$?" = "0" ]; then
|
|
#use zypper
|
|
if [ "$OSVER" = "sles11" ]; then
|
|
zypper ar file:/xcatpost/post/otherpkgs/$OSVER/$ARCH/ otherpkgs
|
|
else
|
|
zypper sa file:/xcatpost/post/otherpkgs/$OSVER/$ARCH/
|
|
fi
|
|
|
|
zypper refresh
|
|
|
|
#install
|
|
PKGS=`echo "$OTHERPKGS" | tr "," " "`
|
|
echo "zypper install -y $PKGS"
|
|
result=`zypper install -y $PKGS 2>&1`
|
|
if [ $? -ne 0 ]; then
|
|
logger "otherpkgs: $result"
|
|
fi
|
|
rm -f -R /xcatpost/post/otherpkgs/*
|
|
exit 0
|
|
fi
|
|
|
|
#last, try rpm
|
|
cd /xcatpost/post/otherpkgs/$OSVER/$ARCH
|
|
echo "using rpm command to install packages" >> /tmp/updatenode.out
|
|
result=`rpm -Uvh --replacepkgs * 2>&1`
|
|
#result=`rpm -Fvh * 2>&1`
|
|
echo "$result"
|
|
echo "$result" >> /tmp/updatenode.out
|
|
if [ $? -ne 0 ]; then
|
|
logger "otherpkgs $result"
|
|
fi
|
|
rm -f -R /xcatpost/post/otherpkgs/*
|
|
exit 0
|
|
#else #AIX
|
|
#mkdir -p /xcatpost/post/otherpkgs/$OSVER/$ARCH
|
|
#rm -f -R /xcatpost/post/otherpkgs/$OSVER/$ARCH/*
|
|
|
|
# get the name of my service node/NIM master from the /etc/niminfo file
|
|
#if [ -f "/etc/niminfo" ]; then
|
|
# servnode=`grep NIM_MASTER_HOSTNAME /etc/niminfo|tr "=" " "|awk {'print $3'}`
|
|
# echo "servnode=$servnode"
|
|
#else
|
|
# echo "Could not find /etc/niminfo file"
|
|
# logger "otherpkgs: Could not find /etc/niminfo file"
|
|
# exit 1
|
|
#fi
|
|
|
|
#for x in `echo "$OTHERPKGS" | tr "," "\n"`
|
|
#do
|
|
# result=`rcp -r $servnode:/install/post/otherpkgs/$OSVER/$ARCH/$x* /xcatpost/post/otherpkgs/$OSVER/$ARCH/.`
|
|
# if [ $? -ne 0 ]; then
|
|
# echo "$result"
|
|
# logger "otherpkgs: $result"
|
|
# fi
|
|
#done
|
|
|
|
#on AIX use geninstall
|
|
#PKGS=`echo "$OTHERPKGS" | tr "," " "`
|
|
#cd /xcatpost/post/otherpkgs/$OSVER/$ARCH
|
|
#result=`geninstall -I aX -Y -d /xcatpost/post/otherpkgs/$OSVER/$ARCH $PKGS 2>&1`
|
|
#rc=$?
|
|
#if [ $rc -ne 0 ]; then
|
|
# echo "$result"
|
|
# logger "otherpkgs: $result"
|
|
#fi
|
|
#exit $rc
|
|
|
|
# echo "Please use nimnodecust command to add additional packages to AIX nodes."
|
|
# logger "xCAT otherpkgs: Please use nimnodecust command to add addition packages to AIX nodes."
|
|
#fi
|
|
|
|
exit 0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|