Diferenciando versões diferentes do mesmo pacote debian

10

Existe alguma maneira de obter diffs entre um pacote instalado localmente e seu atualizado? Isso será útil para verificar exatamente quais partes foram corrigidas, alteradas ou adicionadas.

Por exemplo, digamos que você tenha o pacote linux-libc-dev instalado em seu sistema e

sudo apt-get update && sudo apt-get upgrade

mostra

The following packages will be upgraded:
  linux-libc-dev 

mas você deseja verificar, antes de atualizá-lo, as alterações exatas que foram feitas em comparação à sua versão local do mesmo pacote.

Como podemos fazer isso?

    
por Gödel 20.10.2010 / 00:18

5 respostas

5

Aqui está outra solução que eu hackeei em conjunto: changed .

Leva o nome do pacote binário no qual você está interessado como o único argumento. Para usar um SRU recente como exemplo:

./whatchanged python_papyon

Isto é o que faz:

  1. Verifique se há um candidato de atualização; sair se não houver nenhum
  2. Se um candidato existir, crie diretórios temporários e obtenha os pacotes de origem da versão instalada e do candidato neles
  3. Compare os dois com debdiff e saída para stdout (você provavelmente desejará redirecionar para facilitar a leitura)
  4. Limpe os diretórios temporários.

Ele provavelmente precisa lidar melhor com certas coisas que podem dar errado durante a recuperação da fonte, o controle de fluxo é provavelmente um pouco fora, e deve haver maneiras mais elegantes para verificação de versão, mas funcionou bem no meu teste limitado até agora. Por enquanto, considere um truque rápido que funcione, e melhorias são bem-vindas. Vou enviá-lo para um repositório bzr e / ou criar um projeto do Launchpad se for útil para algumas pessoas.

Editar : em vez de deixá-lo apodrecer no pastebin, iniciei um projeto do Launchpad para ele; você pode obter a revisão de tronco mais recente com bzr branch lp:whatchanged . Sinta-se à vontade para relatar bugs, ramificá-lo, reescrevê-lo em Perl, etc.

    
por mgunes 30.10.2010 / 04:53
7

Afaik, a única maneira de fazer isso é pegar a fonte e fazer a diferença. Você pode obter a fonte real usada para compilar os pacotes com o apt-get. fx:

apt-get source gwibber=2.30.2-0ubuntu3 gwibber=2.30.0.1-0ubuntu1
diff -rupN gwibber-2.30.0.1/ gwibber-2.30.2/

Isso imprimirá todas as diferenças entre todos os arquivos em um formato de patch padrão.

    
por LassePoulsen 20.10.2010 / 01:02
2

Aqui está uma maneira (provavelmente não ideal) de UDD :

Extraia a ramificação de atualizações para sua liberação (assumindo o Lucid) que (a suposição segue) deve conter o SRU mais recente:

bzr branch lp:ubuntu/lucid-updates/package_name

Obtenha as alterações introduzidas pela última revisão, que (segue abaixo) deve corresponder ao SRU mais recente:

bzr diff -c'bzr revno'
    
por mgunes 20.10.2010 / 01:28
0

Se você quiser ver as diferenças de arquivo nos arquivos do pacote, extraia seus arquivos md5sums, ordene-os e diferencie-os e, em seguida, reduza a lista de arquivos reais para comparar drasticamente.

    
por Phil Miller 23.10.2010 / 07:43
-1

Não podem ser as alterações "exatas", mas apt-listchanges lista as entradas do log de alterações para as alterações feitas desde a versão instalada.

Funciona adicionando uma etapa após o término do download dos novos pacotes, mas antes do início da instalação, onde é mostrada a entrada do changelog de cada pacote prestes a ser atualizado. Você pode continuar ou cancelar. Você pode instalá-lo com

sudo apt-get install apt-listchanges

configure-o com

sudo dpkg-reconfigure apt-listchanges
    
por Ken Simon 22.10.2010 / 20:53