Ubuntuを実行していて、debファイルがインストールされています。以前にdebパッケージを作成したことがあるので、debianの変更ログ(debchange)があることはわかっています。私がインストールしたパッケージのdebian changelogを表示する方法はありますか?このパッケージのdebソースファイルにアクセスできず、利用可能なdebファイルもないとします。必要に応じて、追加のパッケージをインストールできます。
または、debもリポジトリにあり、古いバージョンの変更ログを知りたい場合は、apt-get changelog package
を使用してすべての変更ログを読み取ることができます。たとえば、opensslの場合:
apt-get changelog libssl1.0.0
apt-listchanges
は素敵なパッケージですが、最善の策としてdebファイルがなければ、おそらく/ usr/share/doc/somepackage/changelog.Debian.gzからDebianの変更ログを読むことになります。 。
次のコマンドでシェル関数を作成します。
function debchanglog () {
zless "/usr/share/doc/$1/changelog.Debian.gz"
}
Janne Pikkarainenの answer を拡張するために、特定のパッケージのchangelog.Debian.gzを読み取るために使用できるエイリアスを次に示します。
alias changelog="xargs -I% -- zless /usr/share/doc/%/changelog.Debian.gz <<<"
次のように使用できます。
changelog PACKAGE
ただし、これはひどくハックなソリューションであり、ほとんどの状況では推奨されないことに注意してください。関数またはスタンドアロンスクリプトは、はるかに優れたソリューションです。
以下は、PACKAGEで使用可能なすべての変更ログを読み取る関数です。
changelog(){
if (( $# != 1 )); then
echo "Usage: ${FUNCNAME[0]} PACKAGE"
return 1
fi
find -L "/usr/share/doc/$1" -type f -name 'changelog*.gz' -exec zless {} \; 2>/dev/null
}
以下は、PACKAGEで使用可能なすべての変更ログのリストを出力し、読み取るクエリを選択するようにユーザーに問い合わせる関数です。
changelog(){
if (( $# != 1 )); then
echo "Usage: ${FUNCNAME[0]} PACKAGE"
return 1
fi
local changelog changelogs
readarray -t changelogs < <(find -L "/usr/share/doc/$1" -type f -name 'changelog*.gz' 2>/dev/null)
if (( ${#changelogs[@]} == 0 )); then
return 0
Elif (( ${#changelogs[@]} == 1 )); then
zless "${changelogs[0]}"
return $?
fi
select changelog in "${changelogs[@]}" EXIT; do
case $changelog in
'')
echo "ERROR: Invalid selection" >&2
continue
;;
EXIT)
return 0
;;
*)
zless "$changelog"
return $?
;;
esac
done
}