⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 checkinstall

📁 早期Solaris 2.6、7 和 8 的 telnetd存在一个漏洞, 可以通过/bin/login的环境变数 TTYPROMPT 绕过验证
💻
字号:
# checkinstall script to control a patch installation.# directory format options.##       @(#)checkinstall 1.9 02/03/04 SMI## Copyright (c) 2002 by Sun Microsystems, Inc.# All rights reserved#PATH=/usr/sadm/bin:$PATHNOVERS_MSG="PaTcH_MsG 8 Version $VERSION of $PKG is not installed on this system."ALRDY_MSG="PaTcH_MsG 2 Patch number $SUNW_PATCHID is already applied."TEMP_MSG="PaTcH_MsG 23 Patch number $SUNW_PATCHID cannot be applied until all \restricted patches are backed out."# Read the provided environment from what may have been a request script. $1# Old systems can't deal with checkinstall scripts anywayif [ "$PATCH_PROGRESSIVE" = "true" ]; then	exit 0fi## Confirm that the intended version is installed on the system.#if [ "${UPDATE}" != "yes" ]; then	echo "$NOVERS_MSG"	exit 3fi## Confirm that this patch hasn't already been applied and# that no other mix-ups have occurred involving patch versions and# the like.#Skip=0active_base=`echo $SUNW_PATCHID | nawk '	{ print substr($0, 1, match($0, "-")-1) } '`active_inst=`echo $SUNW_PATCHID | nawk '	{ print substr($0, match($0, "-")+1) } '`# Is this a restricted patch?if echo $active_base | egrep -s "R"; then	is_restricted="true"	# All restricted patches are backoutable	echo "PATCH_NO_UNDO=" >> $1else	is_restricted="false"fifor patchappl in ${PATCHLIST}; do	# Is this an ordinary patch applying over a restricted patch?	if [ $is_restricted = "false" ]; then		if echo $patchappl | egrep -s "R"; then			echo "$TEMP_MSG"			exit 3;		fi	fi	# Is there a newer version of this patch?	appl_base=`echo $patchappl | nawk '		{ print substr($0, 1, match($0, "-")-1) } '`	if [ $appl_base = $active_base ]; then		appl_inst=`echo $patchappl | nawk '			{ print substr($0, match($0, "-")+1) } '`		result=`expr $appl_inst \> $active_inst`		if [ $result -eq 1 ]; then			echo "PaTcH_MsG 1 Patch number $SUNW_PATCHID is superceded by the already applied $patchappl."			exit 3		elif [ $appl_inst = $active_inst ]; then			# Not newer, it's the same			if [ "$PATCH_UNCONDITIONAL" = "true" ]; then				if [ -d $PKGSAV/$SUNW_PATCHID ]; then					echo "PATCH_NO_UNDO=true" >> $1				fi			else				echo "$ALRDY_MSG"				exit 3;			fi		fi	fidone# Construct a list of applied patches in orderecho "PATCHLIST=${PATCHLIST} $SUNW_PATCHID" >> $1## Construct the complete list of patches this one obsoletes#ACTIVE_OBSOLETES=$SUNW_OBSOLETESif [ -n "$SUNW_OBSOLETES" ]; then	# Clear the parameter since it has already been used.	echo "SUNW_OBSOLETES=" >> $1	# Pass it's value on to the preinstall under another name	echo "ACTIVE_OBSOLETES=$ACTIVE_OBSOLETES" >> $1fi## Use the first found pkginfo file since all pkginfo files MUST contain# the same patch meta data. This is done since we can never be guaranteed of# where the checkinstall script is located. This will work for all Solaris# releases.#for pkginfo in $INST_DATADIR/*/pkginfo; do	tmpRequire=`nawk -F= ' $1 ~ /REQUIR/ { print $2 } ' $pkginfo`	tmpIncompat=`nawk -F= ' $1 ~ /INCOMPAT/ { print $2 } ' $pkginfo`	breakdone## Construct PATCH_INFO line for this package.#if [ -n "$tmpRequire" ] && [ -n "$tmpIncompat" ]then	echo "PATCH_INFO_$SUNW_PATCHID=Installed: `date` From: `uname -n` \	  Obsoletes: $ACTIVE_OBSOLETES Requires: $tmpRequire \	  Incompatibles: $tmpIncompat" >> $1elif [ -n "$tmpRequire" ]then	echo "PATCH_INFO_$SUNW_PATCHID=Installed: `date` From: `uname -n` \	  Obsoletes: $ACTIVE_OBSOLETES Requires: $tmpRequire Incompatibles: " >> $1elif [ -n "$tmpIncompat" ]then	echo "PATCH_INFO_$SUNW_PATCHID=Installed: `date` From: `uname -n` \	  Obsoletes: $ACTIVE_OBSOLETES Requires: Incompatibles: $tmpIncompat" >> $1else	echo "PATCH_INFO_$SUNW_PATCHID=Installed: `date` From: `uname -n` \	  Obsoletes: $ACTIVE_OBSOLETES Requires: Incompatibles: " >> $1fi# There can be three conditions that exist for this or an older checkinstall# script, listed in order of precedence:## 1. The checkinstall script is located in $INST_DATADIR/<pkgabbrev>.[<ext>]# 2. The checkinstall has been moved to /tmp# 3. An old checkinstall script must handle both 1 and 2.# Check to see if the script has been moved to /tmp by pkginstall.EXECDIR=`dirname $0 | grep "^/tmp/install"`if [ -n "$SUNW_PKG_DIR" ]; then	SCRIPTS_DIR="$SUNW_PKG_DIR/install"elif [ -z "$EXECDIR" ]; then	SCRIPTS_DIR=`dirname $0`else	# The script has been moved to /tmp. This should never happen since S9	# pkginstall only moves the checkinstall script if it detects that it is	# not a patch installation.	EXT=`echo $ARCH | sed \		-e 's/all//' \		-e 's/sparc\.sun4/\./' \		-e 's/sparc//' \		-e 's/sparcv9//' \		-e 's/i386\.i86pc/\.i/' \		-e 's/i386//'`	SCRIPTS_DIR="$INST_DATADIR/$PKGINST$EXT/install"fiecho "SCRIPTS_DIR=$SCRIPTS_DIR" >> $1# If additional operations are required for this package, place# those package-specific commands here.#XXXSpecial_CommandsXXX#exit 0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -