Как посмотреть журнал изменений для пакета deb из Debian/ Ubuntu?
Я использую Ubuntu и у меня установлен файл deb. Я уже делал пакеты deb, поэтому я знаю, что есть журнал изменений debian (debchange). Есть ли какой-нибудь список изменений в Debian для любого пакета, который я установил? Предположим, у меня нет доступа к исходному файлу deb для этого пакета, и у меня нет доступного файла deb. Я могу установить дополнительные пакеты, если это необходимо.
4 ответа
В качестве альтернативы, если 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"
}
Чтобы расширить ответ Янне Пиккарайнен, вот псевдоним, который можно использовать для чтения changelog.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
}
В Ubuntu 18.04+ современная версия
ubuntu18-04:~% apt changelog nginx
nginx (1.14.0-0ubuntu1.9) bionic-security; urgency=medium
* SECURITY UPDATE: DNS Resolver issues
- debian/patches/CVE-2021-23017-1.patch: fixed off-by-one write in
src/core/ngx_resolver.c.
- debian/patches/CVE-2021-23017-2.patch: fixed off-by-one read in
src/core/ngx_resolver.c.
- CVE-2021-23017
...