O Debian Jessie está instalando muitos backports

9

Eu tenho o Debian Jessie e adicionei backports (de acordo com estas instruções ):

echo "deb http://http.debian.net/debian jessie-backports main contrib non-free" | sudo tee /etc/apt/sources.list.d/backports.list

(Eu fiz isso para obter um novo kernel, como eu precisava, de algum hardware no meu laptop.)

As instruções dizem que nada deve acontecer, a menos que eu peça explicitamente por um pacote backported. por exemplo. apt-get -t jessie-backports install "package" .

No entanto, parece que agora tenho uma carga inteira do meu sistema a partir de backports, e um pacote foi desinstalado, porque depende de uma versão exata, de algo que foi atualizado para back-ports.

Então, minha pergunta:

  • Como faço para pará-lo primeiro, para que não haja mais backports instalados?
  • Como removo os backports existentes?

Nota: isso obtém uma lista de pacotes instalados que são de backports (e em formato que podem ser passados para apt-get install , por algum motivo colocar sudo apt-get install no lugar do eco no final do pipeline não funciona):

cat /var/log/dpkg.log.1 |grep -v linux | grep -v xserver | grep -v firmware | grep "status installed" | grep bpo | cut -d" " -f 5 | cut -d: -f 1 | xargs -i{} -n1 bash -c "dpkg-query -s {} >/dev/null && echo {}" | sed -r -e "s~.*~
echo "deb http://http.debian.net/debian jessie-backports main contrib non-free" | sudo tee /etc/apt/sources.list.d/backports.list
/jessie~" | xargs echo

Cuidado:

Alguns dos pacotes são instalados automaticamente, portanto, se você reinstalá-los todos, esses pacotes instalados automaticamente serão marcados como instalados manualmente. Assim, não removido quando não for necessário.

Alguém tem alguma idéia de como resolver isso?

    
por ctrl-alt-delor 16.02.2016 / 00:27

3 respostas

10
  1. Tente adicionar o seguinte a /etc/apt/apt.conf ou a um arquivo em /etc/apt/apt.conf.d :

    APT::Default-Release "jessie";

  2. Para remover os backports existentes, você precisará obter uma lista de quais foram instalados e qual versão eles substituíram. Felizmente, essas informações podem ser extraídas facilmente de /var/log/dpkg.log

por exemplo. grep ' upgrade ' /var/log/dpkg.log fornecerá muitas linhas como as seguintes:

2016-02-15 11:06:32 upgrade python-numpy:amd64 1:1.11.0~b2-1 1:1.11.0~b3-1

Isso diz que às 11h06 do dia 15 de fevereiro atualizei o python-numpy da versão 1: 1.11.0 ~ b2-1 para a versão 1: 1.11.0 ~ b3-1

Se eu quisesse fazer o downgrade para a versão anterior, eu executaria:

apt-get install python-numpy=1:1.11.0~b2-1

NOTA: neste caso em particular, provavelmente não funcionará porque eu executo o debian sid aka unstable , então a versão antiga provavelmente não está mais disponível no repositório deb. Se você estiver executando jessie e estiver reinstalando uma versão jessie de um pacote como um downgrade para a versão jessie-backports, ela funcionará como esperado.

Da mesma forma, se um pacote for removido, você poderá encontrá-lo e sua versão exata usando grepping para remove in /var/log/dpkg.log .

O downgrade em massa de muitos pacotes pode ser amplamente automatizado usando ferramentas padrão como awk e grep . Por exemplo, se você sabe que os upgrades de backports jessie que você instalou foram feitos em um determinado dia (por exemplo, 2016-02-15), é possível fazer o downgrade para as versões anteriores com algo como:

 apt-get -d -u install $(awk '/2016-02-15 ..:..:.. upgrade / {print $4 "=" $5}'
    /var/log/dpkg.log)

(alimentação de linha e recuo adicionado para evitar a barra de rolagem horizontal)

OBSERVE o uso da opção -d ( --download-only ). Execute novamente o comando e remova essa opção depois de verificar se apt-get install fará o que você deseja e SOMENTE o que você deseja.

Eu também recomendo executar somente a parte awk desse comando por si só, para que você possa ver exatamente quais pacotes e versões serão reinstalados.

    
por 16.02.2016 / 03:10
1

Parece que você não configurou corretamente /etc/apt/preferences . O seguinte impedirá que qualquer coisa que esteja sendo instalada de jessie-backports espere o que lhe diz para instalar (como o kernel backported). Você ainda terá problemas se os pacotes especificados exigirem outros pacotes de backports que não estejam listados.

Package: *
Pin: release n=jessie-backports
Pin-Priority: -1

Package: *
Pin: release n=jessie
Pin-Priority: 1000

# this will allow you to not have to use '-t jessie-backports install'
Package: linux-doc linux-headers-amd64 linux-image-amd64 linux-source
Pin: release n=jessie-backports
Pin-Priority: 1000

Se você deseja obter uma lista de pacotes portados, você pode usar o seguinte script (ou partes dele):

chmod a+x name_of_script ./name_of_script > name_of_output_file
#!/bin/bash
RELEASES="jessie-backports"

echo  "Searching for installed packages from" >&2
echo $RELEASES | sed s/^/" * "/ | sed s/\|/"\n * "/g >&2

for package in $(dpkg -l | grep -i ^ii | awk '{print $2}')
do
check=$( apt-cache policy $package 2>&1 | grep -i -A 1 "[*]" | egrep $RELEASES )
if [ "$check" == "" ] ; then
 echo -ne "." >&2
else
 echo -ne "#" >&2
 echo
 apt-cache policy $package
fi
done
echo >&2
echo

Se você quiser fazer o downgrade de qualquer pacote listado pelo script acima, anexe o seguinte a /etc/apt/preferences :

Package: package1 package2 package3
Pin: release n=jessie
Pin-Priority: 1000

Em seguida, execute:

sudo apt-get upgrade
    
por 20.07.2016 / 19:24
1

Verifique sua configuração de pinagem para o apt em / etc / apt / preferences e /etc/apt/preferences.d /

É possível que você tenha adicionado uma configuração de fixação personalizada e esquecido? Essa é a única maneira que eu posso pensar que faria o apt preferir backports como parece estar fazendo com você. Caso contrário, é apenas extrair dependências - que os pacotes que você especificou exigem.

Os backports oficiais já estão fixados abaixo (100) do que o jessie nos pacotes backported. Lançamento do arquivo no repositório backports. Você não deveria ter que fazer qualquer configuração apt para fazer o apt preferir jessie em jessie-backports.

    
por 29.10.2016 / 00:16