Como vejo o changelog de um pacote debian / ubuntu deb?

17

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.

    
por Rory 26.08.2010 / 12:34

3 respostas

18

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
    
por 19.01.2016 / 12:27
12

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"
}
    
por 26.08.2010 / 12:41
3

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
}
    
por 03.10.2015 / 08:28