Verificar atualizações de uma lista específica de pacotes Debian

3

A configuração

Eu rodei um host Debian Squeeze que eu uso para construir um projeto multilíngüe (python, java, php ...) e gerar pacotes customizados (debian e RPM) automaticamente (através de jenkins)

O problema

As distribuições alvo desses pacotes Debian são Etch, Lenny e Squeeze. Mas nosso projeto tem algumas dependências nativas que estão disponíveis somente através do repositório DebianRelease + 1 (por exemplo,Lenny + 1 == Squeeze, Squeeze + 1 == Wheezy ). Nós, por exemplo, precisamos dos pacotes jetty do Squeeze em Lenny, e dos pacotes cyrus-imapd-2.4 do Wheezy no Squeeze. Algumas informações adicionais:

  • Alguns pacotes nós podemos simplesmente 'backport by hand' espelhando os pacotes do DebianRelease + 1 em nossos próprios repositórios. Por exemplo, o pacote jetty do Squeeze rodará bem no Lenny porque não precisa de um s ** tload de dependências adicionais

  • No entanto, precisamos recriar alguns pacotes. Por exemplo, cyrus-imapd-2.4 da Wheezy tem muitas dependências não satisfeitas no Squeeze. Então, precisamos reconstruí-lo no Squeeze e enviá-lo para o nosso repositório.

A questão

Eu preciso ter uma maneira simples de saber se há alguma atualização nesses pacotes extras (atualizações "normais" e "de segurança"). Eu poderia escrever um script simples que é executado semanalmente, obter alguns parâmetros de um arquivo e gerar um relatório de atualização. Digamos que o arquivo tenha esta aparência:

jetty:squeeze
cyrus-imapd-2.4:wheezy

O script deve ser executado como usuário normal para não atrapalhar a configuração do sistema e emitir os comandos apropriados para gerar esse relatório.

O Debian tem alguns comandos / opções apt-* dedicados a esse tipo de problema que eu poderia usar para escrever este script? Se não, alguém pode pensar em outra solução limpa para alcançar o que eu preciso?

    
por Erwan Queffélec 11.11.2012 / 02:18

1 resposta

2

Sim. Eu uso o apt-show-versions para isso. A instalação é tão fácil quanto:

# apt-get install apt-show-versions

No meu /etc/apt/apt.conf eu tenho:

APT::Default-Release "unstable";

Em /e/a/sources.list tenho entradas para repositórios instáveis, experimentais e, por vezes, outros temporários, como o antigo arquivo emacs-snapshot.

Aqui está um exemplo de a-s-v com um pacote atualizado do experimental:

# apt-show-versions -a xmonad
xmonad 0.10.1~darcs20120707-1 install ok installed
xmonad 0.10-4+b2              unstable     192.168.10.1:3142
xmonad 0.10.1~darcs20120707-1 experimental 192.168.10.1:3142
xmonad/experimental uptodate 0.10.1~darcs20120707-1

Aqui está um exemplo de um pacote que está instável e experimental, mas eu só tenho a versão instável:

# apt-show-versions -a zsh
zsh 4.3.17-1 install ok installed
zsh 4.3.17-1 unstable     192.168.10.1:3142
zsh 5.0.0-2  experimental 192.168.10.1:3142
zsh/unstable uptodate 4.3.17-1

Eu posso usar o apt-show-versions para ver se há atualizações no experimental:

# apt-show-versions |grep manually| head
autogen/experimental *manually* upgradeable from 1:5.16-2 to 1:5.16.2-2
iproute/experimental *manually* upgradeable from 20121001-1 to 20121001-2
iproute-doc/experimental *manually* upgradeable from 20121001-1 to 20121001-2

Também é legal porque mostrará pacotes que não estão mais disponíveis em nenhum repositório:

#apt-show-versions |grep -v uptodate |grep "No available"
brscan2 0.2.5-1 installed: No available version in archive
dfc-depends 1.0 installed: No available version in archive
google-chrome-unstable 24.0.1297.0-r162078 installed: No available version in archive
    
por 11.11.2012 / 05:09