Como vejo o log de alterações de um pacote debian / ubuntu deb?


19

Estou executando o Ubuntu e tenho um arquivo deb instalado. Eu fiz pacotes deb antes, então eu sei que existe um log de alterações debian (debchange). Existe alguma maneira de ver o log de alterações da debian para qualquer pacote que eu instalei? Suponha que eu não tenho acesso ao arquivo de origem deb para este pacote e não tenho o arquivo deb disponível. Sou capaz de instalar pacotes extras, se necessário.


5
para ver as mudanças para apt-getos pacotes instalados:apt-get changelog <package>
JFS

@JFSebastian apt-getnão tem esse comando.
Gipi

2
@ gipi: apt-get changelog apt | grep -C5 'apt-get changelog'mostra que este comando foi introduzido em apt (0.8.9ubuntu1) natty(2010). Você pode obter o código-fonte (afinal, é de código aberto): execute apt-get source apte localize o cmdline/apt-get.ccarquivo e veja a DoChangelog()função (btw, veja a DoMoo()função).
Jfs #

estranho, tenho o (debian) apt 0.9.12.1 e este comando não está disponível.
Gipi

Respostas:


21

Alternativamente, se o deb também estiver no repositório e você quiser conhecer o changelog de versões mais antigas, você pode usar apt-get changelog packagepara ler todo o changelog. Por exemplo, para o openssl:

apt-get changelog libssl1.0.0

Esta é definitivamente a resposta relevante para 2016, tanto Debian Jessie e Ubuntu :)
Dmitri DB

Essa é a resposta correta.
Teekin

12

apt-listchangesé um bom pacote para se ter, 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 shell com:

function debchanglog () {
  zless "/usr/share/doc/$1/changelog.Debian.gz"
}

Como o OP aludiu, debchangena verdade é uma ferramenta existente em devscripts usada para criar entradas no registro de alterações. Então, eu recomendo fortemente escolher outro nome. Além disso, $0provavelmente não fará o que você está esperando. No meu caso, ele sempre será executado zless /usr/share/doc/bash/changelog.Debian.gz. No seu caso, substitua bashpelo nome do shell ou script do qual você está executando.
Seis

3

Para estender a resposta de Janne Pikkarainen , aqui está um apelido 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

Observe, porém, que esta é uma solução terrivelmente hackiana 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 registros de alterações disponíveis para 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 registros de alterações disponíveis para 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
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.