あらいです。 非常に今更感に満ちた質問で申し訳ありません。 apt-get update を実行して、パッケージに関連する情報に変更があった場合、 何がどう変わったかを知ることはできるのでしょうか。 例えば、hogeというパッケージのバージョンが上がったとか、新規にgesoと いうパッケージが追加されたとか。 ぐぐったりして調べてもよくわからなかったので、結局私は、添付したよう なシェルスクリプトを使用しています。 性能とかあまり考慮していませんが、一応やりたいことは詰め込んでありま す。 しかし、何か車輪の再発明っぽい気がするので、既存のツールでできるのな らば教えて頂けたらと思います。 よろしくお願いします。
#!/bin/bash cmd="${0##*/}" function usage() { echo "usage: ${cmd} [-n][-h]" } function listpkgs () { pkg= apt-cache dump | while read tag info; do if [ "${tag}" = 'Package:' ]; then pkg="${info}" elif [ "${tag}" = 'Version:' ]; then echo "${pkg} ${info}" fi done | sort return "${PIPESTATUS[0]}" } noupdate= while getopts 'nh' c do case "$c" in n) noupdate='yes' ;; h) usage exit ;; *) usage 1>&2 exit 1 ;; esac done shift $(($OPTIND - 1)) listdir='/var/run/apt' listname="${listdir}/cachelist" last="${listname}.last" prev="${listname}.prev" new="${listname}._new" mkdir -p "${listdir}" if [ $? -ne 0 ]; then exit 1; fi nolast= if [ ! -e "${last}" ]; then echo 'No last cache info; now creating...' listpkgs > "${last}" if [ $? -ne 0 ]; then echo 'Failed.' nolast='yes' else echo 'Done.' fi fi if [ "${noupdate}" ]; then if [ ! -e "${prev}" ]; then echo 'No previous info.' 1>&2; exit 1; fi if [ "${nolast}" ]; then listpkgs | diff "${prev}" - else diff "${prev}" "${last}" fi exit fi apt-get update if [ $? -ne 0 ]; then exit 1; fi listpkgs > "${new}" diff "${last}" "${new}" r=$? if [ "${r}" -ne 0 ]; then if [ $? -ne 1 ]; then echo 'Diff error.' 1>&2; exit 1; fi save="${listname}.$(date -r "${last}" '+%Y%m%d_%H%M')" mv "${last}" "${save}" mv "${new}" "${last}" rm -f "${prev}" ln -s "${save}" "${prev}" fi exit "${r}"
_______________________________________________ vine-users mailing list vine-users@xxxxxxxxxxxxxxxxxxxx http://listserv.linux.or.jp/mailman/listinfo/vine-users