Я использую Ubuntu, и у меня установлен файл deb. Я делал пакеты deb и раньше, поэтому знаю, что есть журнал изменений debian (debchange). Есть ли способ просмотреть журнал изменений debian для любого установленного мною пакета? Предположим, у меня нет доступа к исходному файлу deb для этого пакета, и у меня нет доступного файла deb. При необходимости я могу установить дополнительные пакеты.
В качестве альтернативы, если deb также находится в репозитории, и вы хотите узнать журнал изменений более старых версий, вы можете использовать apt-get changelog package
прочитать весь журнал изменений. Например, для openssl:
apt-get changelog libssl1.0.0
apt-listchanges
- хороший пакет, но без файла deb вам лучше всего прочитать журнал изменений Debian из /usr/share/doc/somepackage/changelog.Debian.gz.
Создайте функцию оболочки с помощью:
function debchanglog () {
zless "/usr/share/doc/$1/changelog.Debian.gz"
}
Продлить на Янне Пиккарайнен ответ, вот псевдоним, который можно использовать для чтения журнала изменений.Debian.gz для любого данного пакета:
alias changelog="xargs -I% -- zless /usr/share/doc/%/changelog.Debian.gz <<<"
Его можно использовать так:
changelog 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
}
Вот функция, которая распечатывает список всех доступных журналов изменений для ПАКЕТА и запрашивает у пользователя выбор, какой из них читать:
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
}