Cygwin なんでも掲示板

一覧最新記事過去一覧 | 検索FAQアンテナHOME
(新規投稿・発言はできません)


スレッド

└◇130:
pkg_add pkg_delete 作りました [中島] 02/09 01:05

 ├◇136:Re:pkg_add pkg_delete 作りました [中島] 02/09
 │└◇137:Re:pkg_add pkg_delete 作りました [中島] 02/09
 └◇166:Re:pkg_add pkg_delete 作りました [yzone] 02/09 <


130● pkg_add pkg_delete 作りました[ 中島 ] 2002 02/09 01:05
 Cygwin の setup.exe は、GUI がついているので、リモートある PC を
telnet を使うなどしてアップデートすることができません。

 そこで、樋口様のシェルスクリプト pkg_add pkg_delete

http://www2.raidway.ne.jp/%7Eyzone/dists/cygwin/pkgtool.tar.gz

を元に、Cygwin の /etc/setup/*.lst.gz に対応した pkg_add pkg_delete を
作りました。
 私は、公開できる場所を持っていないので、どなたか、代理公開してくださる方
はいらっしゃらないでしょうか。
スレッド一覧


136● Re:pkg_add pkg_delete 作りました[ 中島 ] 2002 02/09 01:08
 テキストなんだから、投稿すればいいだけでした。
#馬鹿だなあ>自分

 投稿サイズの上限はあるのでしょうか。
# sed も awk も sort も cat も使ってないので長いです。

#!/bin/sh
#pkg_add

if [ ! -x /bin/mkdir ]; then
exit 1
elif [ ! -x /bin/tar ]; then
exit 1
elif [ ! -x /bin/gzip ]; then
exit 1
elif [ ! -x /bin/bzip2 ]; then
exit 1
fi

PROG=${0##*/}
if [ $# -lt 1 ]; then
echo "usage: ${PROG} <pkgname1> ... [pkgnameN]" >&2
exit 1
fi

DATDIR=${CYGWIN_SETUP_DAT:="/etc/setup_local"}
if [ ! -d ${DATDIR} ]; then
mkdir ${DATDIR}
fi

### START ###

for i in $@; do
PKGFILE=$i
if [ ! -f ${PKGFILE} ]; then
PKGFILE=${DAVEDIR}/$i
fi
if [ ! -f ${PKGFILE} ]; then
echo "${PROG}: not found PKG $i" >&2
else
DATFILE=${PKGFILE##*/}
DATFILE=${DATFILE%%.*}
DATFILE=${DATFILE%-[0-9]*}
DATFILE=${DATDIR}/${DATFILE}.lst
if [ -f ${DATFILE}.gz ]; then
echo "${PROG}: found ${DATFILE}.gz" >&2
echo "${PROG}: plese uninstall OLD Version" >&2
else
echo "${PROG}: install PKG ${PKGFILE}" >&2
case ${PKGFILE} in
*.bz2) tar xvjf ${PKGFILE} -C / > ${DATFILE} ;;
*.gz) tar xvzf ${PKGFILE} -C / > ${DATFILE} ;;
*.tgz) tar xvzf ${PKGFILE} -C / > ${DATFILE} ;;
*) echo "${PROG}: invalid package type ${PKGFILE}" >&2 ;;
esac
if [ -f ${DATFILE} ]; then
while read line; do
echo $line
done < ${DATFILE}
gzip ${DATFILE}
fi
fi
fi
done

exit 0
スレッド一覧


137● Re:pkg_add pkg_delete 作りました[ 中島 ] 2002 02/09 01:08
 続きです。

#!/bin/sh
# pkg_delete

if [ ! -x /bin/mktemp ]; then
exit 1
elif [ ! -x /bin/tar ]; then
exit 1
elif [ ! -x /bin/gzip ]; then
exit 1
elif [ ! -x /bin/bzip2 ]; then
exit 1
elif [ ! -x /bin/rm ]; then
exit 1
elif [ ! -x /bin/rmdir ]; then
exit 1
fi

PROG=${0##*/}
if [ $# -lt 1 ]; then
echo "usage: ${PROG} <pkgname1> ... [pkgnameN]" >&2
exit 1
fi

DATDIR=${CYGWIN_SETUP_DAT:="/etc/setup_local"}

### START ###

for i in $@; do
PKGFILE=$i
if [ ! -f ${PKGFILE} ]; then
PKGFILE=${SAVEDIR}/$i
fi
if [ ! -f ${PKGFILE} ]; then
echo "${PROG}: not found PKG $i" >&2
else
DATFILE=${PKGFILE##*/}
DATFILE=${DATFILE%%.*}
DATFILE=${DATFILE%-[0-9]*}
DATFILE=${DATDIR}/${DATFILE}.lst
if [ -f ${DATFILE}.gz ]; then
echo "${PROG}: found DAT ${DATFILE}.gz" >&2
TMPF=`mktemp -t pkg_delete.XXXXXXXX`
gzip -dc ${DATFILE}.gz > ${TMPF}
rm -f ${DATFILE}.gz
else
echo "${PROG}: not found DAT ${DATFILE}.gz" >&2
echo "${PROG}: making list from ${PKGFILE}" >&2
TMPF=`mktemp -t pkg_delete.XXXXXXXX`
case ${PKGFILE} in
*.bz2) tar xvjf ${PKGFILE} -C /dev/null > ${TMPF} ;;
*.gz) tar xvzf ${PKGFILE} -C /dev/null > ${TMPF} ;;
*.tgz) tar xvzf ${PKGFILE} -C /dev/null > ${TMPF} ;;
*) echo "${PROG}: invalid package type ${PKGFILE}" >&2 ;;
esac
fi
while read line; do
FILE=`echo $line`
if [ -f /${FILE} ]; then
rm -f /${FILE} > /dev/null 2>&1
if [ $? -eq 0 ]; then echo "remove file: /${FILE}"; fi
fi
done < ${TMPF}
while read line; do
FILE=`echo $line`
if [ -d /${FILE} ]; then
rmdir /${FILE} > /dev/null 2>&1
if [ $? -eq 0 ]; then echo "remove dir: /${FILE}"; fi
fi
done < ${TMPF}
rm -f ${TMPF}
fi
done

exit 0
スレッド一覧


166● Re:pkg_add pkg_delete 作りました[ yzone ] 2002 02/09 01:19
中島さんからメールを頂いて、私の所のpkgtoolも中島さん版に置き換え
させて頂いてます。どうもありがとうございました。

>  Cygwin の setup.exe は、GUI がついているので、リモートある PC を
> telnet を使うなどしてアップデートすることができません。

なるほど。自分で作っておいてなんですが、使う人居るんだなぁなどと
思ってたんですが、こういう理由だったんですね。納得です。
スレッド一覧

早田のホームページへ
CGIROOM