Debian:アップグレード可能なすべてのパッケージのバージョン番号(現在/当時)と変更ログ

Debian:アップグレード可能なすべてのパッケージのバージョン番号(現在/当時)と変更ログ

現在、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

関連情報