Como descobrir quais pacotes backport estão disponíveis e evitar a perda de pacotes ao atualizar manualmente?

4

Fiquei surpreso ao ver que desde o Natty 11.04, mesmo quando temos ativado um repositório de backports, os pacotes atualizados não são automaticamente instalados nesse repositório. Temos que instalar atualizações individuais manualmente, por ex. via

apt-get install ipython/precise-backports

como explicado em UbuntuBackports - Documentação do Ubuntu da comunidade . Eu acho que eu simplesmente não recebi o memorando ...

Primeira pergunta: como descobrimos quais são nossas opções para atualizações via backports? Estou surpreso que, mesmo se eu pedir status, por exemplo via

wajig status ipython

não me diz que há uma nova versão disponível. Eu gostaria de uma lista de todos os upgrades para pacotes que eu já instalei.

Em seguida, como posso evitar a perda de pacotes existentes apenas porque faço upgrade por meio de um backport?

Por exemplo a instalação acima do ipython me diz:

The following packages will be REMOVED:
   ipython-notebook ipython-qtconsole

Como posso dizer que eu quero o mais recente ipport suportado, assim como qualquer outro pacote para o qual as atualizações estejam disponíveis e que dependam dele, sem que seja possível manualmente descobri-las e instalá-las também?

Eu sei que posso alterar a fixação para que eu obtenha todas atualizações, mas hesito em não ir contra o conselho geral. Mas se um usuário pedir que um pacote seja atualizado, não seria natural atualizar todas as dependências, como você obteria de um ppa?

    
por nealmcb 21.08.2013 / 20:02

1 resposta

3
  

como descobrimos quais são nossas opções para atualizações via backports?

Execute o apt-get com a opção --default-release ou -t :

sudo apt-get -t precise-backports upgrade

É o mesmo que apt-get install ipython/precise-backports , mas você não precisa inserir a parte precise-backports .

  

Estou surpreso que, mesmo se eu pedir status, por exemplo via wajig status ipython não me diz que há uma nova versão disponível.

Para isso eu uso apt-cache policy :

apt-cache policy iceweasel
iceweasel:
  Installed: 25.0~a2+20130816004007-1~bpo70+1
  Candidate: 25.0~a2+20130816004007-1~bpo70+1
  Package pin: 25.0~a2+20130816004007-1~bpo70+1
  Version table:
 *** 25.0~a2+20130816004007-1~bpo70+1 1990
       1990 http://mozilla.debian.net/ wheezy-backports/iceweasel-aurora i386 Packages
        100 /var/lib/dpkg/status
     23.0-2 1990
         -1 http://ftp.us.debian.org/debian/ experimental/main i386 Packages
     17.0.8esr-2 1990
        990 http://ftp.utexas.edu/debian/ testing/main i386 Packages
         -1 http://ftp.de.debian.org/debian/ sid/main i386 Packages
  

Em seguida, como posso evitar a perda de pacotes existentes apenas porque faço upgrade por meio de um backport?

Se os pacotes que você deseja atualizar quebrarem as dependências anteriores, você deve decidir se está atualizando ou deixando as coisas como estão. Ou você apenas força as coisas e interrompe a sua instalação, depende de você.

  

Como posso dizer que eu quero o mais recente ipport suportado, assim como qualquer outro pacote para o qual as atualizações estejam disponíveis e que dependam dele, sem que seja possível manualmente descobri-las e instalá-las também?

O mesmo que acima.

  

Mas se um usuário pedir que um pacote seja atualizado, não seria natural atualizar todas as dependências, como você obteria de um ppa?

Se não houver candidatos de atualização, não. Isso acontece muito nas distribuições de lançamentos, alguns pacotes dependem de outros que ainda não estão disponíveis nos repositórios, então o apt decide não fazer o upgrade, pois quebra as dependências.

Para o caso de ipython que você mencionou nos comentários:

Após a página de dependências do pacote ipython-notebook=0.13.2-1~ubuntu12.04.1 depende de ipython=0.13.2-1~ubuntu12.04.1 , mas se você tentar atualizar ipython sozinho, o apt irá tomar suas ações como prioridade e cumpri-las a qualquer custo. Como você está dizendo ao apt para instalar o ipython dos backports, ele entende:

  

Cumprir somente esta condição a qualquer custo

Assim, a única maneira de fazer isso é remover / rebaixar qualquer pacote que obtenha dependências quebradas devido a essa operação ( ipython-notebook ) e instalar ipython de backports. A maneira correta de fazer isso é:

sudo apt-get -t precise-backports install ipython-notebook ipython

ou

sudo apt-get -t precise-backports upgrade

O primeiro irá dizer ao apt-get para instalar ipython-notebook e ipython dos backports, o segundo irá dizer para atualizar qualquer pacote instalado que tenha atualizações no repositório precise-backports .

    
por Braiam 21.08.2013 / 20:52

Tags