▼スレッド
│
└◇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 <
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 を
作りました。
私は、公開できる場所を持っていないので、どなたか、代理公開してくださる方
はいらっしゃらないでしょうか。
テキストなんだから、投稿すればいいだけでした。スレッド一覧
#馬鹿だなあ>自分
投稿サイズの上限はあるのでしょうか。
# 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
続きです。スレッド一覧
#!/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
中島さんからメールを頂いて、私の所のpkgtoolも中島さん版に置き換えスレッド一覧
させて頂いてます。どうもありがとうございました。
> Cygwin の setup.exe は、GUI がついているので、リモートある PC を
> telnet を使うなどしてアップデートすることができません。
なるほど。自分で作っておいてなんですが、使う人居るんだなぁなどと
思ってたんですが、こういう理由だったんですね。納得です。