Como alternativa, se o deb também estiver no repositório e você quiser saber o changelog de versões mais antigas, você pode usar apt-get changelog package
para ler todo o changelog. Por exemplo, para openssl:
apt-get changelog libssl1.0.0
Estou executando o Ubuntu e tenho um arquivo deb instalado. Eu fiz pacotes deb antes, então eu sei que existe um changelog debian (debchange). Existe alguma maneira de ver o changelog debian para qualquer pacote que eu tenha instalado? Suponha que eu não tenha acesso ao arquivo de origem deb para este pacote, e eu não tenho o arquivo deb disponível. Eu posso instalar pacotes extras, se necessário.
Como alternativa, se o deb também estiver no repositório e você quiser saber o changelog de versões mais antigas, você pode usar apt-get changelog package
para ler todo o changelog. Por exemplo, para openssl:
apt-get changelog libssl1.0.0
apt-listchanges
é um bom pacote para se ter por perto, mas sem ter um arquivo deb em torno de sua melhor aposta, provavelmente é ler o changelog do Debian em /usr/share/doc/somepackage/changelog.Debian.gz .
Crie uma função de shell com:
function debchanglog () {
zless "/usr/share/doc/$1/changelog.Debian.gz"
}
Para ampliar a resposta de Janne Pikkarainen, aqui está um alias que pode ser usado para ler o changelog.Debian.gz para qualquer pacote:
alias changelog="xargs -I% -- zless /usr/share/doc/%/changelog.Debian.gz <<<"
Pode ser usado assim:
changelog PACKAGE
Por favor, note que esta é uma solução terrivelmente hack e não é recomendada na maioria das circunstâncias. Uma função ou script independente é uma solução muito melhor.
Aqui está uma função que lê todos os changelogs disponíveis para o 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
}
Aqui está uma função que imprime uma lista de todos os changelogs disponíveis para o PACKAGE e consulta o usuário para selecionar qual deles ler:
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
}
Tags apt package-management debian deb ubuntu