diff -ruN /opt/SUNWut.orig/bin/utset /opt/SUNWut/bin/utset --- /opt/SUNWut.orig/bin/utset 2010-02-08 02:42:57.000000000 +0100 +++ /opt/SUNWut/bin/utset 2010-02-08 02:43:20.000000000 +0100 @@ -870,7 +870,7 @@ print "$R $S" done ) | - (export LC_ALL=C; sort -t 'x' +0 -1n +1 -2n +2 -3n) + (export LC_ALL=C; sort -t 'x' -k 1,1n -k 2,2n -k 3,3n ) exit 0 fi diff -ruN /opt/SUNWut.orig/lib/dhcp/isc/dhcp_config_linux /opt/SUNWut/lib/dhcp/isc/dhcp_config_linux --- /opt/SUNWut.orig/lib/dhcp/isc/dhcp_config_linux 2010-02-08 02:42:57.000000000 +0100 +++ /opt/SUNWut/lib/dhcp/isc/dhcp_config_linux 2010-02-08 02:43:20.000000000 +0100 @@ -7,7 +7,11 @@ # UTDHCPDIR="$ETCDIR"/net/dhcp -DHCPDCONF=/etc/dhcpd.conf +if [[ -f "/etc/dhcp3/dhcpd.conf" ]]; then + DHCPDCONF=/etc/dhcp3/dhcpd.conf +else + DHCPDCONF=/etc/dhcpd.conf +fi UTDHCPFILE="$UTDHCPDIR"/utdhcp OPTIONSFILENAME="SunRay-options" OPTIONSFILE="$UTDHCPDIR"/"$OPTIONSFILENAME" @@ -30,12 +34,16 @@ DUMMY_SUBNET_COMMENT="# Sun Ray: dummy subnet to support DHCP clients on remote subnets" CheckChrooted() { - grep $CHROOTKEY $SYSDHCPD | grep -i yes 2>/dev/null 1>&2 - if [[ $? -eq 0 ]]; then - CHROOTED=true + if [[ -f $SYSDHCPD ]]; then + grep $CHROOTKEY $SYSDHCPD | grep -i yes 2>/dev/null 1>&2 + if [[ $? -eq 0 ]]; then + CHROOTED=true + else + CHROOTED=false + fi else CHROOTED=false - fi + fi } GenerateOptionsDHCPDBlock() { diff -ruN /opt/SUNWut.orig/lib/dhcp/isc/utdhcpservice /opt/SUNWut/lib/dhcp/isc/utdhcpservice --- /opt/SUNWut.orig/lib/dhcp/isc/utdhcpservice 2010-02-08 02:42:57.000000000 +0100 +++ /opt/SUNWut/lib/dhcp/isc/utdhcpservice 2010-02-08 02:43:20.000000000 +0100 @@ -49,9 +49,14 @@ # names of files and directories that will be touched by this script # -DHCP_CONFIG="/etc/dhcpd.conf"; +if [[ -f "/etc/dhcp3/dhcpd.conf" ]]; then + DHCP_CONFIG="/etc/dhcp3/dhcpd.conf" +else + DHCP_CONFIG="/etc/dhcpd.conf" +fi DHCP_CONFIG_SAMPLE_RHAS="/usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample"; DHCP_CONFIG_SAMPLE_SLES="/usr/share/doc/packages/dhcp-server/dhcpd.conf"; +DHCP_CONFIG_SAMPLE_DEB="/usr/share/doc/dhcp3-server/examples/dhcpd.conf"; TMPDIR="/var/opt/SUNWut/tmp" CORONA_NAME="SunRay"; CORONA_TITLE="Sun Ray"; @@ -59,6 +64,8 @@ DHCP_DIR="/var/lib/dhcp"; elif [ -d /var/lib/dhcpd ]; then DHCP_DIR="/var/lib/dhcpd"; +elif [ -d /var/lib/dhcp3 ]; then + DHCP_DIR="/var/lib/dhcp3"; fi SUNRAY_FILE_MARK="${CORONA_TITLE} default DHCP config file" @@ -76,6 +83,7 @@ typeset DHCP_RUNNING=true typeset DHCP_PACKAGE_RH="dhcp" typeset DHCP_PACKAGE_SU="dhcp-server" +typeset DHCP_PACKAGE_DEB="dhcp3-server" typeset DHCP_PACKAGE="DHCP" typeset DHCP_STATE="online" @@ -97,7 +105,12 @@ typeset PACKAGE="${DHCP_PACKAGE}" if $DHCP_INSTALLED ; then # get the actual package name including version and release - PACKAGE="$(rpm -q ${DHCP_PACKAGE} 2> /dev/null)" + DPKG=$(which dpkg1) + if [[ -f "$DPKG" ]]; then + PACKAGE="$(dpkg -l | grep dhcp3-server | awk '{print $2$3}' 2> /dev/null)" + else + PACKAGE="$(rpm -q ${DHCP_PACKAGE} 2> /dev/null)" + fi fi if ! $DHCP_RUNNING && [ $DHCP_STATE != "unconfigured" ] ; then DHCP_STATE="disabled" @@ -122,12 +135,18 @@ DHCP_CONFIG_SAMPLE=${DHCP_CONFIG_SAMPLE_RHAS} elif [ -f ${DHCP_CONFIG_SAMPLE_SLES} ]; then DHCP_CONFIG_SAMPLE=${DHCP_CONFIG_SAMPLE_SLES} + elif [ -f ${DHCP_CONFIG_SAMPLE_DEB} ]; then + DHCP_CONFIG_SAMPLE=${DHCP_CONFIG_SAMPLE_DEB} fi diff ${DHCP_CONFIG} ${DHCP_CONFIG_SAMPLE} > /dev/null 2>&1 if [[ $? == 0 ]]; then mv ${DHCP_CONFIG} ${DHCP_CONFIG}.sunray else - dhcpd -t > /dev/null 2>&1 + if [[ -f "/usr/sbin/dhcpd3" ]]; then + dhcpd3 -t > /dev/null 2>&1 + else + dhcpd -t > /dev/null 2>&1 + fi if [[ $? == 0 ]]; then cat > ${DHCP_CONFIG}.$$ <<-! # ${SUNRAY_FILE_MARK} /etc/dhcpd.conf @@ -208,7 +227,11 @@ return 3 fi - /etc/init.d/dhcpd start > /dev/null 2>&1 + if [[ -f /etc/init.d/dhcp3-server ]]; then + /etc/init.d/dhcp3-server start > /dev/null 2>&1 + else + /etc/init.d/dhcpd start > /dev/null 2>&1 + fi return $? } @@ -216,8 +239,11 @@ if ! $DHCP_ENABLED ; then return 3 fi - - /etc/init.d/dhcpd stop > /dev/null 2>&1 + if [[ -f /etc/init.d/dhcp3-server ]]; then + /etc/init.d/dhcp3-server stop > /dev/null 2>&1 + else + /etc/init.d/dhcpd stop > /dev/null 2>&1 + fi return $? } @@ -225,8 +251,11 @@ if ! $DHCP_ENABLED ; then return 3 fi - - /etc/init.d/dhcpd restart > /dev/null 2>&1 + if [[ -f /etc/init.d/dhcp3-server ]]; then + /etc/init.d/dhcp3-server restart > /dev/null 2>&1 + else + /etc/init.d/dhcpd restart > /dev/null 2>&1 + fi return $? } @@ -237,11 +266,16 @@ if [[ $? -ne 0 ]] ; then ${UT_BASEDIR}/lib/utprodinfo -t installed ${DHCP_PACKAGE_SU} 2>/dev/null 1>&2 if [[ $? -ne 0 ]]; then - DHCP_INSTALLED=false - DHCP_ENABLED=false - DHCP_CONFIGURED=false - DHCP_RUNNING=false - DHCP_STATE="uninstalled" + ${UT_BASEDIR}/lib/utprodinfo -t installed ${DHCP_PACKAGE_DEB} 2>/dev/null 1>&2 + if [[ $? -ne 0 ]]; then + DHCP_INSTALLED=false + DHCP_ENABLED=false + DHCP_CONFIGURED=false + DHCP_RUNNING=false + DHCP_STATE="uninstalled" + else + DHCP_PACKAGE=${DHCP_PACKAGE_DEB} + fi else DHCP_PACKAGE=${DHCP_PACKAGE_SU} fi @@ -266,8 +300,11 @@ if [[ $? != 0 ]] ; then DHCP_CONFIGURED=false # Interface / subnet not defined fi - - /etc/init.d/dhcpd status 2> /dev/null | grep "running" >/dev/null 2>&1 + if [[ -f "/etc/init.d/dhcp3-server" ]]; then + /etc/init.d/dhcp3-server status 2> /dev/null | grep "running" >/dev/null 2>&1 + else + /etc/init.d/dhcpd status 2> /dev/null | grep "running" >/dev/null 2>&1 + fi if [[ $? -ne 0 ]]; then DHCP_RUNNING=false fi diff -ruN /opt/SUNWut.orig/lib/iu_modules/M08GDM /opt/SUNWut/lib/iu_modules/M08GDM --- /opt/SUNWut.orig/lib/iu_modules/M08GDM 2010-02-08 02:42:57.000000000 +0100 +++ /opt/SUNWut/lib/iu_modules/M08GDM 2010-02-08 02:43:20.000000000 +0100 @@ -312,7 +312,7 @@ # if IsInstallRequired; then # when installing, pick up the build number from the rpm in the CD image - typeset TMP_NAME=`ls -1tr ${GDM_DIR}/${GDM_NAME}-${GDM_OUR_VERSION}-?*.i386.rpm | tail -1` + typeset TMP_NAME=`ls -1tr ${GDM_DIR}/${GDM_NAME}-${GDM_OUR_VERSION}-?*.i386.rpm | tail -n 1` TMP_NAME=${TMP_NAME##*-} export GDM_RELEASE=${TMP_NAME%%\.i386*} else diff -ruN /opt/SUNWut.orig/lib/iu_modules/M10SunDS /opt/SUNWut/lib/iu_modules/M10SunDS --- /opt/SUNWut.orig/lib/iu_modules/M10SunDS 2010-02-08 02:42:57.000000000 +0100 +++ /opt/SUNWut/lib/iu_modules/M10SunDS 2010-02-08 02:43:20.000000000 +0100 @@ -98,7 +98,7 @@ # NOTE: head -2 to deal with the case the first line is blank. # we need only to know if there is anything under the subtree. # - ANY=$(ldapsearch -b "$BASE" -s one "objectclass=*" dn 2>&- | head -2) + ANY=$(ldapsearch -b "$BASE" -s one "objectclass=*" dn 2>&- | head -n 2) search_st=$? if [[ $search_st -eq 0 ]]; then # subtree exists, check if empty diff -ruN /opt/SUNWut.orig/lib/iu_modules/M40AuthMgr /opt/SUNWut/lib/iu_modules/M40AuthMgr --- /opt/SUNWut.orig/lib/iu_modules/M40AuthMgr 2010-02-08 02:42:57.000000000 +0100 +++ /opt/SUNWut/lib/iu_modules/M40AuthMgr 2010-02-08 02:43:20.000000000 +0100 @@ -289,19 +289,19 @@ # try to set keyval to uncommented pair first old_keyval=$(grep "=" $oldfile 2>&- | - grep "^[ ]*${key}[= ]" | tail -1) + grep "^[ ]*${key}[= ]" | tail -n 1) # if no uncommented pair, take the last commented pair [[ -z "$old_keyval" ]] && \ old_keyval=$(grep "=" $oldfile 2>&- | - grep "^[# ]*${key}[= ]" | tail -1) + grep "^[# ]*${key}[= ]" | tail -n 1) # try to set keyval to uncommented pair first new_keyval=$(grep "=" $newfile 2>&- | - grep "^[ ]*${key}[= ]" | tail -1) + grep "^[ ]*${key}[= ]" | tail -n 1) # if no uncommented pair, take the last commented pair [[ -z "$new_keyval" ]] && \ new_keyval=$(grep "=" $newfile 2>&- | - grep "^[# ]*${key}[= ]" | tail -1) + grep "^[# ]*${key}[= ]" | tail -n 1) # # Check if this parameter does not have to be modified diff -ruN /opt/SUNWut.orig/lib/support_lib/iu_lib /opt/SUNWut/lib/support_lib/iu_lib --- /opt/SUNWut.orig/lib/support_lib/iu_lib 2010-02-08 02:42:57.000000000 +0100 +++ /opt/SUNWut/lib/support_lib/iu_lib 2010-02-08 02:43:20.000000000 +0100 @@ -200,8 +200,8 @@ for patchid in $all_patches; do print -n "... checking patch ${patchid} ... " - exist=$(grep "${patchid}-[0-9][0-9]" ${showrev_p} | head -1) - patch=$(\ls -1 "$dir" 2>&- | grep "^${patchid}" | tail -1) + exist=$(grep "${patchid}-[0-9][0-9]" ${showrev_p} | head -n -1) + patch=$(\ls -1 "$dir" 2>&- | grep "^${patchid}" | tail -n -1) pkgs=$(cd "${dir}/${patch}" 2>&-; \ls -1 */pkginfo 2>&- | sed -e 's:/pkginfo::g') diff -ruN /opt/SUNWut.orig/lib/support_lib/sras_config /opt/SUNWut/lib/support_lib/sras_config --- /opt/SUNWut.orig/lib/support_lib/sras_config 2010-02-08 02:42:57.000000000 +0100 +++ /opt/SUNWut/lib/support_lib/sras_config 2010-02-08 02:43:20.000000000 +0100 @@ -392,13 +392,13 @@ else if [[ $APACHE_INSTALLED == "both" ]]; then if [[ $OS == "Linux" ]]; then - if ! ReplyIsYes "\nThere is an instance of Apache detected in both" \ + if ! ReplyIsYes "\nThere is an istance of Apache detected in both" \ "\n/etc/httpd and /usr/apache. The default is /etc/httpd." \ "\nWould you like to use this instance? Answering \"no\"" \ "\nwill configure the /usr/apache instance." ; then APACHETMP="$ETC_OPT_UT"/http/templates/apache.tpl - APACHECTL="/usr/apache/bin/apachectl" - APACHEDIR="/usr/apache/conf" + APACHECTL="/usr/bin/apache2ctl" + APACHEDIR="/etc/apache2" APACHECFG="$APACHEDIR"/httpd.conf fi UT_LOCATION=$APACHEDIR @@ -580,6 +580,13 @@ rm -f /etc/opt/SUNWut/http/auto.start fi print ${APACHECTL} > /etc/opt/SUNWut/http/auto.start + if [[ -f /etc/default/apache2 ]]; then + . /etc/default/apache2 + if [[ "$NO_START" = "1" ]]; then + echo "# 0 = start on boot; 1 = don't start on boot" > /etc/default/apache2 + echo "NO_START=0" >> /etc/default/apache2 + fi + fi } function RemoveAutoStart { @@ -898,6 +905,8 @@ if [[ $OS == "Linux" ]]; then if [[ -f /etc/httpd/conf/magic || -f /etc/httpd/magic ]]; then HTTPD_SCRIPT=/usr/sbin/httpd + elif [[ -f /etc/apache2/magic ]]; then + HTTPD_SCRIPT=/usr/sbin/apache2 fi fi @@ -938,6 +947,8 @@ BUNDLED_MAGIC=/etc/httpd/conf/magic elif [[ -f /etc/httpd/magic ]]; then BUNDLED_MAGIC=/etc/httpd/magic + elif [[ -f /etc/apache2/magic ]]; then + BUNDLED_MAGIC=/etc/apache2/magic fi ;; esac @@ -1066,11 +1077,26 @@ fi STATUS=1 fi + + # Check for apache in Debian/Ubuntu location + elif [[ -f /etc/apache2/magic ]]; then + APACHEDIR="/etc/apache2" + APACHETMP="$ETC_OPT_UT"/http/templates/apache.tpl.debian + APACHECTL="/etc/init.d/apache2" fi ;; esac if [[ -n $APACHEDIR ]]; then - APACHECFG="$APACHEDIR"/httpd.conf + if [[ "$OS" = "Linux" ]]; then + . /etc/lsb-release + if [[ "$DISTRIB_ID" = "Ubuntu" ]] || [[ "$DISTRIB_ID" = "Debian" ]]; then + APACHECFG="$APACHEDIR"/apache2.conf + else + APACHECFG="$APACHEDIR"/httpd.conf + fi + else + APACHECFG="$APACHEDIR"/httpd.conf + fi fi ApacheInstalled diff -ruN /opt/SUNWut.orig/lib/support_lib/upgrade_lib /opt/SUNWut/lib/support_lib/upgrade_lib --- /opt/SUNWut.orig/lib/support_lib/upgrade_lib 2010-02-08 02:42:57.000000000 +0100 +++ /opt/SUNWut/lib/support_lib/upgrade_lib 2010-02-08 02:43:20.000000000 +0100 @@ -56,9 +56,9 @@ for key in $(awk -F= '{ print $1 }' $oldfile 2>&- | grep -v "^#" | sort -u); do old_keyval=$(grep "^[ ]*$key[= ]" $oldfile 2>&- | - tail -1) + tail -n 1) new_keyval=$(grep "^[ ]*$key[= ]" $newfile 2>&- | - tail -1) + tail -n 1) if [[ -n "$old_keyval" && -n "$new_keyval" ]]; then if [[ "$old_keyval" != "$new_keyval" ]]; then DoUpgrade "$key" "$old_keyval" "$new_keyval" "$newfile" @@ -116,7 +116,7 @@ fi for key in $(grep -v "^#" "$oldfile" 2>&- | awk -F= '{ print $1 }' | sort -u); do - line=$(grep "^${key}[ =]" "$oldfile" 2>&- | tail -1) + line=$(grep "^${key}[ =]" "$oldfile" 2>&- | tail -n 1) grep "$line" "$newfile" 2>&1 >/dev/null || \ DoAppend "$line" "$newfile" done @@ -564,7 +564,7 @@ return 1 fi - _RETURN_VAL=$(ls -1 ${TARFILE}* | tail -1) + _RETURN_VAL=$(ls -1 ${TARFILE}* | tail -n 1) return 0 diff -ruN /opt/SUNWut.orig/lib/utadmingid /opt/SUNWut/lib/utadmingid --- /opt/SUNWut.orig/lib/utadmingid 2010-02-08 02:42:57.000000000 +0100 +++ /opt/SUNWut/lib/utadmingid 2010-02-08 02:43:20.000000000 +0100 @@ -15,7 +15,7 @@ ETCDIR="/etc/opt/SUNWut" UTADMINPW=${ETCDIR}/utadmin.pw if [ -f $UTADMINPW ] ; then - WEBGUI_GROUP=`/bin/ls -gn $UTADMINPW | /bin/awk '{print $3}' ` + WEBGUI_GROUP=`/bin/ls -gn $UTADMINPW | awk '{print $3}' ` fi WEBGUI_GROUP=${WEBGUI_GROUP:-root} print $WEBGUI_GROUP diff -ruN /opt/SUNWut.orig/lib/utctl.d/features/utcronctl /opt/SUNWut/lib/utctl.d/features/utcronctl --- /opt/SUNWut.orig/lib/utctl.d/features/utcronctl 2010-02-08 02:42:57.000000000 +0100 +++ /opt/SUNWut/lib/utctl.d/features/utcronctl 2010-02-08 02:43:20.000000000 +0100 @@ -37,13 +37,13 @@ return fi - (set +e; head -1 $CRONFILE | \ + (set +e; head -n 1 $CRONFILE | \ grep "^# DO NOT EDIT THIS FILE - edit the master and reinstall" \ > /dev/null 2>&1) if [ $? -eq 0 ]; then # comment exists, remove them cat /dev/null >$TMPFILE_COMM - head -3 $CRONFILE | sed \ + head -n 3 $CRONFILE | sed \ -e "/^# DO NOT EDIT THIS FILE - edit the master and reinstall/d" \ -e "/^# (\/[^ ]* installed/d" \ -e "/^# (Cron version/d" >> $TMPFILE_COMM diff -ruN /opt/SUNWut.orig/lib/utdmsession /opt/SUNWut/lib/utdmsession --- /opt/SUNWut.orig/lib/utdmsession 2010-02-08 02:42:57.000000000 +0100 +++ /opt/SUNWut/lib/utdmsession 2010-02-08 02:43:20.000000000 +0100 @@ -26,7 +26,7 @@ #exec >/var/tmp/utdmsession.$$ 2>&1 # Debug #set -x -MOD="`/bin/basename $0`" +MOD="`basename $0`" USAGE="usage: $MOD [-c|-d] Xdisplay [-z tag]" UTMNT_DIRLOCK=".session" diff -ruN /opt/SUNWut.orig/lib/utdtsession /opt/SUNWut/lib/utdtsession --- /opt/SUNWut.orig/lib/utdtsession 2010-02-08 02:42:57.000000000 +0100 +++ /opt/SUNWut/lib/utdtsession 2010-02-08 02:43:20.000000000 +0100 @@ -554,7 +554,7 @@ # so that a new session can be created. # get the existing session ID - oldsid=$(head -1 $tif) + oldsid=$(head -n 1 $tif) # get the existing session type OLD_SESSION_TYPE="" diff -ruN /opt/SUNWut.orig/lib/utgdmconfigpath /opt/SUNWut/lib/utgdmconfigpath --- /opt/SUNWut.orig/lib/utgdmconfigpath 2010-02-08 02:42:57.000000000 +0100 +++ /opt/SUNWut/lib/utgdmconfigpath 2010-02-08 02:44:16.000000000 +0100 @@ -31,11 +31,11 @@ fi else - gdm_path=`rpm -ql "gdm" | grep "custom.conf"` + gdm_path=`dpkg -L "gdm" | grep "gdm.conf"` if [ $? -ne 0 ]; then status=1 else - gdm_dir=${gdm_path%custom.conf} + gdm_dir=${gdm_path%gdm.conf} fi fi diff -ruN /opt/SUNWut.orig/lib/utprodinfo /opt/SUNWut/lib/utprodinfo --- /opt/SUNWut.orig/lib/utprodinfo 2010-02-08 02:42:57.000000000 +0100 +++ /opt/SUNWut/lib/utprodinfo 2010-02-08 02:47:08.000000000 +0100 @@ -75,6 +75,8 @@ set -A SunOS_Mapped_Sed # Mapped parameter query format for the Linux packaging utility set -A Linux_Mapped_Param +# Mapped parameter query format for the dpkg packaging utility +set -A Debian_Mapped_Param # Maximum number of parameters allowed typeset -i MAXParam=1 @@ -82,42 +84,51 @@ Param[${MAXParam}]="BASEDIR" SunOS_Mapped_Param[${MAXParam}]="BASEDIR" Linux_Mapped_Param[${MAXParam}]="%{INSTALLPREFIX}" +Debian_Mapped_Param[${MAXParam}]="INSTALLPREFIX" let MAXParam+=1 # --- VERSION - version number with the build info. Ex: 2.0_37.b Param[${MAXParam}]="VERSION" SunOS_Mapped_Param[${MAXParam}]="VERSION" SunOS_Mapped_Sed[${MAXParam}]="s/\([0-9][0-9]*\.[0-9][0-9]*_[0-9][0-9]*.*\),.*/\1/" Linux_Mapped_Param[${MAXParam}]="%{VERSION}_%{RELEASE}" +Debian_Mapped_Param[${MAXParam}]="DEBVERSION" let MAXParam+=1 # --- PSTAMP - product timestamp Param[${MAXParam}]="PSTAMP" SunOS_Mapped_Param[${MAXParam}]="PSTAMP" Linux_Mapped_Param[${MAXParam}]="%{BUILDTIME:date}" +Debian_Mapped_Param[${MAXParam}]="" let MAXParam+=1 # --- NAME - description of the package. Param[${MAXParam}]="NAME" SunOS_Mapped_Param[${MAXParam}]="NAME" Linux_Mapped_Param[${MAXParam}]="%{SUMMARY}" +Debian_Mapped_Param[${MAXParam}]='${Description;40}' let MAXParam+=1 # --- PRODVERS - product version without the build info. Ex: 2.0 Param[${MAXParam}]="PRODVERS" SunOS_Mapped_Param[${MAXParam}]="SUNW_PRODVERS" Linux_Mapped_Param[${MAXParam}]="%{VERSION}" +Debian_Mapped_Param[${MAXParam}]="DEBPRODVERS" let MAXParam+=1 # --- PKGNAME - package name. Ex: SUNWuto Param[${MAXParam}]="PKGNAME" SunOS_Mapped_Param[${MAXParam}]="PKGINST" Linux_Mapped_Param[${MAXParam}]="%{NAME}" +Debian_Mapped_Param[${MAXParam}]='${Package}\\n' let MAXParam+=1 # --- INSTDATE - date the package is installed on the system. Param[${MAXParam}]="INSTDATE" SunOS_Mapped_Param[${MAXParam}]="INSTDATE" Linux_Mapped_Param[${MAXParam}]="%{INSTALLTIME:date}" +Debian_Mapped_Param[${MAXParam}]="" let MAXParam+=1 # --- PATCHLIST - list of patches installed for this package. Param[${MAXParam}]="PATCHLIST" SunOS_Mapped_Param[${MAXParam}]="PATCHLIST" Linux_Mapped_Param[${MAXParam}]="" +Debian_Mapped_Param[${MAXParam}]="" + let MAXParam+=1 @@ -156,14 +167,22 @@ # add key name manipulation sed script SEDLIST="${SEDLIST} -e s/^${SunOS_Mapped_Param[${1}]}=/${Param[${1}]}=/" fi - else - if [[ -n "${Linux_Mapped_Param[${1}]}" ]]; then + elif [[ ${PREFIX} = "Debian" ]]; then + if [[ -n "${Debian_Mapped_Param[${1}]}" ]]; then if ${2}; then - MAPPEDLIST="${MAPPEDLIST}${Param[${1}]}=${Linux_Mapped_Param[${1}]}\\n" + MAPPEDLIST="${MAPPEDLIST}${Param[${1}]}=${Debian_Mapped_Param[${1}]}\\n" else - MAPPEDLIST="${Linux_Mapped_Param[${1}]}\\n" + MAPPEDLIST="${Debian_Mapped_Param[${1}]}\\n" fi fi + else + if [[ -n "${Linux_Mapped_Param[${1}]}" ]]; then + if ${2}; then + MAPPEDLIST="${MAPPEDLIST}${Param[${1}]}=${Linux_Mapped_Param[${1}]}\\n" + else + MAPPEDLIST="${Linux_Mapped_Param[${1}]}\\n" + fi + fi fi } @@ -323,6 +342,14 @@ return $? } +Debian_dispAll() { + $DEBUG + # NOTE: must sort first so that we can return the exit code from grep + dpkg -l | grep "Sun Ray" + return $? +} + + # # dispParams - displays the parameter information in key-value form. # $1 - package name @@ -345,6 +372,43 @@ return 0 } +Debian_dispParams() { + $DEBUG + if ! ${PREFIX}_testPkg installed $PKGNAME; then + # package not installed; + print -u2 "${ERROR_PREF} package $PKGNAME not installed" + return 1 + fi + + buildParamList "$@" + if [[ $? -eq 1 ]]; then + # found no params, just return + return 0 + fi + + # This is becaue the alien converted packaged are lowercase + DEB="`echo "${PKGNAME}" | tr '[A-Z]' '[a-z]'`" + VERSION="" + PRODVERS="" + + # The below is a bit of a hack to get the correct informtin out of dpkg-query + # it always returns /opt as the basedir + + if [ "`echo "${MAPPEDLIST}"|grep "DEBVERSION"`" ]; then + VERSION="`dpkg-query -f '${Version}\n' -W "${DEB}" | sed -e 's/-/_/'`" + fi + if [ "`echo "${MAPPEDLIST}"|grep "DEBPRODVERS"`" ]; then + PRODVERS="`dpkg-query -f '${Version}\n' -W "${DEB}" | sed -e 's/-.*$//'`" + fi + + QL="`echo "${MAPPEDLIST}"|sed -e 's/INSTALLPREFIX/\/opt/g' -e "s/DEBVERSION/${VERSION}/g" -e "s/DEBPRODVERS/${PRODVERS}/g"`" + if [ "`echo "${QL}"|grep '\\$'`" ]; then + dpkg-query -f "${QL}" -W "${DEB}" + else + echo "${QL}" + fi + return 0 +} # # testPkg - test the condition specified on the package. @@ -377,6 +441,34 @@ return 1 } +Debian_testPkg() { + $DEBUG + if [[ $# -ne 2 ]]; then + return 1 + fi + DEB="`echo "$2" | tr '[A-Z]' '[a-z]'`" + case $1 in + "installed") # package installed, could be either partial or complete + dpkg-query -W $DEB > /dev/null 2>&1 + return $?;; + "partial") # package partially installed + # + # rpm does not understand the concept of partially installed packages. + # So, for now, we always return 1 (ie. false) since it can never be + # partially installed packages. + # + return 1;; + "complete") # package completely installed + # dpkg format does not have a verify option, this will return if installed even partially + dpkg-query -q $DEB > /dev/null 2>&1 + return $?;; + esac + + # invalid test condition + print -u2 "${ERROR_PREF} invalid test operation \"$1\"." + return 1 +} + PREFIX=`uname -s` if [[ -z "$PREFIX" ]]; then @@ -384,6 +476,12 @@ print -u2 "${ERROR_PREF} unable to determince the OS running on this system." exit 1 fi +if [[ "$PREFIX" = "Linux" ]]; then + . /etc/lsb-release + if [[ "$DISTRIB_ID" = "Ubuntu" ]] || [[ "$DISTRIB_ID" = "Debian" ]]; then + PREFIX="Debian" + fi +fi OPMODE="" SUBOP="" diff -ruN /opt/SUNWut.orig/lib/utwebadmin /opt/SUNWut/lib/utwebadmin --- /opt/SUNWut.orig/lib/utwebadmin 2010-02-08 02:42:57.000000000 +0100 +++ /opt/SUNWut/lib/utwebadmin 2010-02-08 02:43:20.000000000 +0100 @@ -92,7 +92,7 @@ if [ ! -n "$rootShell" ]; then rootShell=/bin/sh fi - for shell in `cat /etc/shells` + for shell in `egrep -v '^#' /etc/shells` do if [ $shell != $rootShell ]; then SU_SHELL="-s $shell" diff -ruN /opt/SUNWut.orig/lib/xmgr/gdm/add-dpy /opt/SUNWut/lib/xmgr/gdm/add-dpy --- /opt/SUNWut.orig/lib/xmgr/gdm/add-dpy 2010-02-08 02:42:57.000000000 +0100 +++ /opt/SUNWut/lib/xmgr/gdm/add-dpy 2010-02-08 02:43:20.000000000 +0100 @@ -64,7 +64,7 @@ xcdesc="DisplayManager.*_%d.environment: SUN_SUNRAY_TOKEN=$token CORONA_TOKEN=$token" if [ "$type" = normal ] then - xsdesc=":%d SunRay local /usr/X11R6/bin/Xnewt :%d" + xsdesc=":%d SunRay local /opt/SUNWut/lib/Xnewt :%d" else xsdesc="# :%d RESERVED" fi diff -ruN /opt/SUNWut.orig/sbin/utadm /opt/SUNWut/sbin/utadm --- /opt/SUNWut.orig/sbin/utadm 2010-02-08 02:42:57.000000000 +0100 +++ /opt/SUNWut/sbin/utadm 2010-02-08 02:43:20.000000000 +0100 @@ -5,7 +5,6 @@ # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # - # # Configuring Sun Ray interfaces: # ------------------------------ @@ -218,17 +217,28 @@ else NETWORKS="${ETC_OPT_UT}/net/networks"; fi - DHCPCONFIG="/etc/dhcpd.conf" + if [[ -f "/etc/dhcp3/dhcpd.conf" ]]; then + DHCPCONFIG="/etc/dhcp3/dhcpd.conf" + else + DHCPCONFIG="/etc/dhcpd.conf" + fi GREP=grep # XXX need to figure out which <=== - INIT_DHCP="/etc/init.d/dhcpd"; + if [[ -f "/etc/init.d/dhcp3-server" ]]; then + INIT_DHCP="/etc/init.d/dhcp3-server" + else + INIT_DHCP="/etc/init.d/dhcpd" + fi if [[ -d "/etc/sysconfig/network-scripts" ]] ; then IFCONFIG_SCRIPT="/etc/sysconfig/network-scripts/ifcfg-" IFCONFIG_BOOT="ONBOOT=yes" BOOTPROTO=none - else - IFCONFIG_SCRIPT="/etc/sysconfig/network/ifcfg-" - IFCONFIG_BOOT="STARTMODE=onboot" + elif [[ -f "/etc/network/interfaces" ]] ; then + IFCONFIG_SCRIPT="/etc/network/interfaces" BOOTPROTO=static + else + IFCONFIG_SCRIPT="/etc/sysconfig/network/ifcfg-" + IFCONFIG_BOOT="STARTMODE=onboot" + BOOTPROTO=static fi IFCFG_INET=""; @@ -993,6 +1003,10 @@ # get the intf's symbolic name INTF_NAME=`getent hosts ${INTF_IPA} | awk '{print $2}'`; if [ -z "${INTF_NAME}" ]; then + # Work around for bug in Ubuntu getent Launchpad BugID 28585 + INTF_NAME=`getent hosts | grep -w ${INTF_IPA} | awk '{print $2}'` + fi + if [ -z "${INTF_NAME}" ]; then print -u2 "Error: host name for ${INTF_IPA} not found" exit 1; fi @@ -1147,8 +1161,40 @@ ifconfig ${INTF} "${IPADDR}" up netmask "${NETMASK}" broadcast ${BROADCAST}; RC=$? if [[ ${RC} -eq 0 ]] ; then - rm -f ${TMPDIR}/tmpfile.$$; - cat > ${TMPDIR}/tmpfile.$$ <<-! + . /etc/lsb-release 2 > /dev/null + if [[ "$DISTRIB_ID" = "Ubuntu" ]] || [[ "$DISTRIB_ID" = "Debian" ]]; then + rm -f ${TMPDIR}/tmpfile.$$; + cat > ${TMPDIR}/tmpfile.$$ <<-! +# SUNRAY ADD +auto ${INTF} +iface ${INTF} inet ${BOOTPROTO} +address ${IPADDR} +netmask ${NETMASK} +# SUNRAY ADD +! + awk ' { + if (NF == "0") print $0; + else if ($1 == "allow") {print $0; param="false";} + else if ($1 == "mapping") {print $0; param="false";} + else if ($1 == "auto") + {if ($2 == Intf) print "# SUNRAY DEL "$0; + else print $0; + param="false";} + else if ($1 == "iface") + {if ($2 == Intf) {print "# SUNRAY DEL "$0; param="true";} + else {print $0; param="false";}} + else if (param == "true") print "# SUNRAY DEL "$0; + else {print $0; param="false";} + }' \ + Intf=${INTF} \ + ${IFCONFIG_SCRIPT} > ${IFCONFIG_SCRIPT}.$$ + + cat ${IFCONFIG_SCRIPT}.$$ ${TMPDIR}/tmpfile.$$ > ${IFCONFIG_SCRIPT} + rm -f ${TMPDIR}/tmpfile.$$ ${IFCONFIG_SCRIPT}.$$ + + else + rm -f ${TMPDIR}/tmpfile.$$; + cat > ${TMPDIR}/tmpfile.$$ <<-! DEVICE=${INTF} # SUNRAY ADD USERCTL=no # SUNRAY ADD ${IFCONFIG_BOOT} # SUNRAY ADD @@ -1158,17 +1204,18 @@ NETMASK=${NETMASK} # SUNRAY ADD IPADDR=${IPADDR} # SUNRAY ADD ! - if [[ -f ${IFCONFIG_SCRIPT}${INTF} ]] ; then - sed -e "/^"HWADDR"/!s/^/# SUNRAY DEL /" "${IFCONFIG_SCRIPT}${INTF}" > ${IFCONFIG_SCRIPT}${INTF}.$$ - # - # change ether config so it starts on boot - - rm -f ${IFCONFIG_SCRIPT}${INTF} - cat ${IFCONFIG_SCRIPT}${INTF}.$$ ${TMPDIR}/tmpfile.$$ > ${IFCONFIG_SCRIPT}${INTF} - rm -f ${IFCONFIG_SCRIPT}${INTF}.$$ ${TMPDIR}/tmpfile.$$ - else - mv -f ${TMPDIR}/tmpfile.$$ ${IFCONFIG_SCRIPT}${INTF}; - fi + if [[ -f ${IFCONFIG_SCRIPT}${INTF} ]] ; then + sed -e "/.*/s/^/# SUNRAY DEL /" "${IFCONFIG_SCRIPT}${INTF}" > ${IFCONFIG_SCRIPT}${INTF}.$$ + # + # change ether config so it starts on boot + + rm -f ${IFCONFIG_SCRIPT}${INTF} + cat ${IFCONFIG_SCRIPT}${INTF}.$$ ${TMPDIR}/tmpfile.$$ > ${IFCONFIG_SCRIPT}${INTF} + rm -f ${IFCONFIG_SCRIPT}${INTF}.$$ ${TMPDIR}/tmpfile.$$ + else + mv -f ${TMPDIR}/tmpfile.$$ ${IFCONFIG_SCRIPT}${INTF}; + fi + fi fi print "### finished install of \"${INTF}\" interface"; return $RC @@ -1189,6 +1236,38 @@ if [[ ! -s ${IFCONFIG_SCRIPT}${INTF} ]]; then rm -f ${IFCONFIG_SCRIPT}${INTF} fi + elif [[ -f ${IFCONFIG_SCRIPT} ]] ; then + cp ${IFCONFIG_SCRIPT} ${IFCONFIG_SCRIPT}.$$ + awk ' { + if (($2 == "SUNRAY" ) && ($3 == "DEL")) + {if (($4 == "auto") && ($5 == Intf)) + {output=""; + for (field=4; field<=NF; ++field) {output=output$field" ";} + print output; + param="false";} + else if (($4 == "iface") && ($5 == Intf )) + {output=""; for (field=4; field<=NF; ++field) {output=output$field" ";} + print output; + param="true";} + else if (param == "true") + {output=""; for (field=4; field<=NF; ++field) {output=output$field" ";} + print output; + param="true";} + else {print $0; param="false";} + } + else if (($2 == "SUNRAY") && ($3 == "ADD")) + {if (comment_count == "1") {if (remove != "true") {print $0;};comment_count = "2";remove = "false";} + else if (comment_count == "2") {comment_count = "1";remove = "possible"} + else {comment_count = "1"; remove="possible";} + } + else if (remove == "possible") + if (($1 == "auto") && ($2 == Intf)) {remove="true";} + else {remove="false";print "# SUNRAY ADD"; print $0;} + else if (remove != "true") {print $0; param="false";} + }' \ + Intf=${INTF} \ + ${IFCONFIG_SCRIPT}.$$ > ${IFCONFIG_SCRIPT} + rm -f ${IFCONFIG_SCRIPT}.$$ else print -u2 "Warning: unable to update ${IFCONFIG_SCRIPT}${INTF}"; fi @@ -1822,7 +1901,6 @@ ${UTDHCPSERVICE} disable > /dev/null 2>&1 } - # # adds the SR network configuration for both interface and subnetwork only. # @@ -3301,6 +3379,8 @@ lease_file=/var/lib/dhcpd/dhcpd.leases elif [ -f /var/lib/dhcp/db/dhcpd.leases ]; then lease_file=/var/lib/dhcp/db/dhcpd.leases + elif [ -f /var/lib/dhcp3/dhcpd.leases ]; then + lease_file=/var/lib/dhcp3/dhcpd.leases fi rm -f $tmp_leases diff -ruN /opt/SUNWut.orig/sbin/utconfig /opt/SUNWut/sbin/utconfig --- /opt/SUNWut.orig/sbin/utconfig 2010-02-08 02:42:57.000000000 +0100 +++ /opt/SUNWut/sbin/utconfig 2010-02-08 02:43:20.000000000 +0100 @@ -240,7 +240,12 @@ # Define Linux specific LDAP variables # Determine which LDAP client package is installed # - LCL_PACKAGE="$(rpm -qf /usr/bin/ldapadd 2>/dev/null)" + . /etc/lsb-release + if [[ "$DISTRIB_ID" = "Ubuntu" ]] || [[ "$DISTRIB_ID" = "Debian" ]]; then + LCL_PACKAGE="$(dpkg-query -S /usr/bin/ldapadd | awk -F: '{print $1}' 2>/dev/null)" + else + LCL_PACKAGE="$(rpm -qf /usr/bin/ldapadd 2>/dev/null)" + fi # Define Linux versions of LDAP client commands # @@ -255,7 +260,11 @@ # Define Linux specific filenames # ETCSERVICES="/etc/services" - DHCPCONFIG="/etc/dhcpd.conf" + if [[ -f "/etc/dhcp3/dhcpd.conf" ]]; then + DHCPCONFIG="/etc/dhcp3/dhcpd.conf" + else + DHCPCONFIG="/etc/dhcpd.conf" + fi ;; *) diff -ruN /opt/SUNWut.orig/sbin/utfwadm /opt/SUNWut/sbin/utfwadm --- /opt/SUNWut.orig/sbin/utfwadm 2010-02-08 02:42:57.000000000 +0100 +++ /opt/SUNWut/sbin/utfwadm 2010-02-08 02:43:20.000000000 +0100 @@ -144,7 +144,7 @@ function GetVersion { FW_FILE_INPUT=${1} # extract the version string and make file names - FW_TYPE=$(od -t x1 $FW_FILE_INPUT | head -1 | awk '{ print sprintf("%s%s%s%s", $2,$3,$4,$5)}') 2> /dev/null + FW_TYPE=$(od -t x1 $FW_FILE_INPUT | head -n 1 | awk '{ print sprintf("%s%s%s%s", $2,$3,$4,$5)}') 2> /dev/null case $FW_TYPE in 4badbeef | 8badbeef | bbadbeef) $UTWHAT $FW_FILE_INPUT > ${TMPDIR}/fw_strings.$$ diff -ruN /opt/SUNWut.orig/sbin/utreplica /opt/SUNWut/sbin/utreplica --- /opt/SUNWut.orig/sbin/utreplica 2010-02-08 02:42:57.000000000 +0100 +++ /opt/SUNWut/sbin/utreplica 2010-02-08 02:43:20.000000000 +0100 @@ -78,7 +78,13 @@ ETCSERVICES=/etc/inet/services LOGFILE="/var/adm/log/$PROGRAM_ID.${TIMESTAMP}.log" ;; - Linux) LCL_PACKAGE="$(rpm -qf /usr/bin/ldapadd 2>/dev/null)" + Linux) . /etc/lsb-release + if [[ "$DISTRIB_ID" = "Ubuntu" ]] || [[ "$DISTRIB_ID" = "Debian" ]]; then + LCL_PACKAGE="$(dpkg-query -S /usr/bin/ldapadd | awk -F: '{print $1}' 2>/dev/null)" + else + LCL_PACKAGE="$(rpm -qf /usr/bin/ldapadd 2>/dev/null)" + fi + LDAPSEARCH="/usr/bin/ldapsearch -x -LLL " GREP=/bin/grep ETCSERVICES=/etc/services @@ -1134,7 +1140,7 @@ Fatal "$server is already configured as a primary server." elif print $remote_rep | egrep "$SECONDARY_ID"\ >/dev/null 2>&1; then - typeset -l tmp_host=`print "$remote_rep" | tail -1` + typeset -l tmp_host=`print "$remote_rep" | tail -n 1` if [ "${tmp_host}" != $HOSTNAME ]; then Fatal "$server is already configured as a secondary server\n"\ "with a different primary." @@ -1173,7 +1179,7 @@ then # only check the first line of the file. This avoids the problem of accidentally # picking up the "replica" attribute which will also have the same string match. - head -1 $DSSERV_REPLOG | grep '^replica: ' >/dev/null 2>&1 + head -n 1 $DSSERV_REPLOG | grep '^replica: ' >/dev/null 2>&1 if [ $? -ne 0 ] then cat /dev/null > $DSSERV_REPLOG