現在、LennyとSqueezeの両方がインストールされています。
次の方法を知りたいです。
- アップグレード可能なすべてのパッケージのリスト
- 現在および将来のパッケージ番号を学ぶ
- 現在および将来のバージョン番号間のすべての変更を所有します(ChangeLog)。
- 実際には何もアップグレードせずに
また、この情報を取得するためにスーパーユーザー権限は必要ありません。
これにより、aptitude update && aptitude upgrade
パッケージのみが表示されます。パッケージをインストールするときは、インストールをコミットapt-listchanges
した後にのみ表示されます(例:中断できることがわかります)。
たぶん、まだすべてのパッケージをダウンロードしたくないかもしれません(できる多くの場合、これは他の場所からChangeLogをインポートする必要があることを意味します(ただし、必ずしも必要ではありません。ダウンロードすることも機能しますが、スーパーユーザー権限が必要です)。
修正する
調べるために言及された答えを削除しましたapt-listchanges
。私の質問を考えると、重複しているように聞こえますが、実際に単独で使用できることにapt-listchanges
気づいていませんでした。マニュアルページにオプションが記載されていますが、--apt
どのオプションがわかりません。管路(私の目標を満たすなら)構築する必要があります。
アップデート2
私は良い結果が得られると思いますapt-show-versions
。ちょうどChangeLogが欠落しているだけです。
$ apt-show-versions -u
apache2/squeeze upgradeable from 2.2.16-6+squeeze1 to 2.2.16-6+squeeze2
apache2-mpm-worker/squeeze upgradeable from 2.2.16-6+squeeze1 to 2.2.16-6+squeeze2
apache2-utils/squeeze upgradeable from 2.2.16-6+squeeze1 to 2.2.16-6+squeeze2
apache2.2-bin/squeeze upgradeable from 2.2.16-6+squeeze1 to 2.2.16-6+squeeze2
apache2.2-common/squeeze upgradeable from 2.2.16-6+squeeze1 to 2.2.16-6+squeeze2
答え1
以下は、必要なものすべてを印刷するドラフトbash / zshスクリプトです。依存関係の変更により、インストールされた新しいパッケージではなく、アップグレード可能なパッケージでのみ機能します。セキュリティや信頼性の高いアップデートでは正しく機能しません。そして、http://packages.debian.org/changelogs/最新バージョンではなく(更新可能バージョンを除く)、すべての変更ログエントリを印刷します。別の問題(または必要に応じて機能)は、各ソースパッケージではなく各バイナリパッケージのアイテムを印刷することです。したがって、重複したコンテンツを取得することもできます。ご覧のとおり、改善の余地がたくさんあります。インストールが必要ですapt-show-versions
。
#!/bin/bash
FLAVOURS=(main contrib non-free)
TEMPFILE=$(mktemp)
trap "rm -f $TEMPFILE; exit" SIGHUP SIGINT SIGTERM
apt-show-versions -u | while read PACKAGE A B FROM C TO ; do
PACKAGE=${PACKAGE%%/*}
SOURCEPACKAGE=$(dpkg-query -W -f '${Source}' $PACKAGE)
SOURCEPACKAGE=${SOURCEPACKAGE%% *}
SOURCEPACKAGE=${SOURCEPACKAGE:-$PACKAGE}
PREFIX=${SOURCEPACKAGE:0:1}
if expr match $SOURCEPACKAGE "lib.*" > /dev/null ; then
PREFIX=${SOURCEPACKAGE:0:4}
fi
echo Changelog for $PACKAGE from $FROM to $TO
for i in $FLAVOURS ; do
if wget -q "http://packages.debian.org/changelogs/pool/$i/$PREFIX/$SOURCEPACKAGE/current/changelog.txt" -O $TEMPFILE ; then
dpkg-parsechangelog --since "$FROM" --to "$TO" -l$TEMPFILE | sed -e "1,/Changes:/d"
break
fi
done
echo
done
rm $TEMPFILE
すべての情報を自動化された方法で取得する必要がない場合は、ユーザーインターフェイスを使用できますaptitude
。ここでどのパッケージをアップグレードできるかを確認し、新しいエントリが強調表示されている対応する変更ログを取得できますC
。